应用层

图解TCPIP-OSI7层网络模型

假装没事ソ 提交于 2019-12-23 02:13:35
OSI(Open System Interconnect) 应用层: HTTP 表示层: 转换应用处理信息和网络传输信息. 网络传入对比特流解释不同,所以一般使用base64转码 会话层: 建立和断开通信连接 socket的listen(),accept(),connect() 传输层: TCP/UDP协议 网络层: IP地址协议 数据链路层: 将0/1序列划分为有意义的数据帧,传送 物理层 1.计算机以二进制0/1表示信息 2.传输媒介用电压的高低/光闪灭/电波的强弱表示 3.物理层就是将二者进行转换 参考: <图解TCP IP> 来源: CSDN 作者: Claroja 链接: https://blog.csdn.net/claroja/article/details/103508488

TCP/IP 分层

心不动则不痛 提交于 2019-12-21 04:36:44
网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/ I P ,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图1 - 1所示。 每一层负责不同的功能: 1) 链路层,有时也称作数据链路层或网络接口层,通常包括 操作系统 中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。 2) 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(internet互联网控制报文协议),以及IGMP协议(internet组治理协议)。 3 ) 运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议: TCP(传输控制协议)和UDP(用户数据报协议)。 TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。 而另一方面, U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供

Socket连接与HTTP连接

北战南征 提交于 2019-12-17 02:04:07
Socket连接与HTTP连接 我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。 1)Socket是一个针对TCP和UDP编程的接口,你可以借助它建立TCP连接等等。而TCP和UDP协议属于传输层 。 而http是个应用层的协议,它实际上也建立在TCP协议之上。 (HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。) 2)Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口。 下面是一些的重要的概念,特在此做摘抄和总结。 一。什么是 TCP 连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j

服务器模型——从单线程阻塞到多线程非阻塞(中)

旧时模样 提交于 2019-12-16 23:54:48
https://blog.csdn.net/wangyangzhizhou/article/details/78899629 前言的前言 服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: * 单线程/多线程阻塞I/O模型 * 单线程非阻塞I/O模型 * 多线程非阻塞I/O模型,Reactor及其改进 前言 这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。从不同维度可以有不同的分类,这里从I/O的阻塞与非阻塞、I/O处理的单线程与多线程角度探讨服务器模型。 对于I/O,可以分成阻塞I/O与非阻塞I/O两大类型。阻塞I/O在做I/O读写操作时会使当前线程进入阻塞状态,而非阻塞I/O则不进入阻塞状态。 对于线程,单线程情况下由一条线程负责所有客户端连接的I/O操作,而多线程情况下则由若干线程共同处理所有客户端连接的I/O操作。 单线程非阻塞I/O模型 多线程阻塞I/O模型通过引入多线程确实提高了服务器端的并发处理能力,但每个连接都需要一个线程负责I/O操作。当连接数量较多时可能导致机器线程数量太多,而这些线程大多数时间却处于等待状态,造成极大的资源浪费。鉴于多线程阻塞I/O模型的缺点,有没有可能用一个线程就可以维护多个客户端连接并且不会阻塞在读写操作呢?下面介绍单线程非阻塞I/O模型。 单线程非阻塞I/O模型最重要的一个特点是

计算机网络体系结构(下)

孤人 提交于 2019-12-16 08:47:08
一. 计算机网络系统结构标准概述   最早的计算机网络体系结构源于IBM在1974年宣布的系统网络体系结构SNA (Systems Network Architecture),这个著名的网络标准就是一种层次化网络体系结构。不久后,其他一些公司也相继推出自己公司的具有不同名称的体系结构。不同的网络体系结构出现后,采用不同的网络体系结构的产品就很难互相连通(通信)。然而,全球经济的发展使得处在不同网络体系结构的用户迫切要求能够互相交换信息,为此,国际标准化组织ISO成立了专门的机构研究该问题,并于1977年提出了一个试图使各种计算机在世界范围内互联成网的标准框架,即著名的 开放系统互连基本参考模型OSI/RM (Open System Interconnection Reference Model) 。正如在本篇的姊妹篇 《计算机网络体系结构(上)》 提到的那样, OSI七层体系结构具有概念清楚、理论完整的特点,是一个理论上的国际标准,但却不是事实上的国际标准;而具有简单易用特点的TCP/IP 四层体系结构则是事实上的标准。 需要指出的是,五层体系结构虽然综合了 OSI 和 TCP/IP 的优点,但其只是为了学术学习研究而提出的,没有具体的实际意义。 三者结构示意图如下所示: 二. OSI 七层体系结构简述 1、OSI七层参考体系结构  在OSI七层参考模型的体系结构中

OSI参考模型

岁酱吖の 提交于 2019-12-10 11:09:33
OSI(Open System Interconnect),即 开放式系统 互联。 一般都叫OSI参考模型,是ISO( 国际标准化组织 )组织在1985年研究的 网络互联 模型。该 体系结构 标准定义了网络互连的七层框架( 物理层 、 数据链路层 、 网络层 、 传输层 、 会话层 、 表示层 和 应用层 ),即ISO 开放系统互连参考模型 。在这一框架下进一步详细规定了每一层的功能,以实现 开放系统 环境中的互连性、 互操作性 和应用的可移植性。[1] 中文名 OSI参考模型 外文名 Open System Interconnect 解 释 开放式系统 互联 设定组织 国际标准化组织 设定时间 1985年 目 的 开放系统 环境中的互连性等 目录 1 简介 2 划分原则 3 分层 4 各层功能 5 数据封装过程 6 比喻 7 模型用途 8 若干概念 9 ISO 7498概念 10 影响 简介 编辑 开放系统 OSI标准定制过程中所采用的方法是将整个庞大而复杂的问题划分为若干个容易处理的小问题,这就是分层的体系结构方法。在OSI中,采用了三级抽象,即体系结构、服务定义和 协议 规定说明。 OSI参考模型定义了开放系统的 层次结构 、层次之间的相互关系及各层所包含的可能的服务。它是作为一个框架来协调和组织各层协议的制定,也是对网络内部结构最精练的概括与描述进行整体修改。

1.应用层

匆匆过客 提交于 2019-12-09 19:53:29
http\ftp\smtp\dns\ssh\dhcp\telnet 一、应用层概念   运输层为应用进程提供了端对端的通信服务。但是不同的网络应用进程之间还需要不同的通信规则。因此,在运输层之上还需要有应用层协议。   应用层的任务是 通过应用进程间的交互来完成特定网络应用 。应用层协议定义的是 应用进程间的通信和交互的规则 ,对于不同的网络需要使用不同的应用层协议。例如域名系统DNS、支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等。   应用层交互的数据单元称为 报文 。 二、网络应用模型   分为两类:   ①客户服务器(C/S)模型:一个服务器对应多个客户机。   ②P2P模型:多个用户之间相互对应。 三、域名系统-DNS   1.DNS是用来把便于人们使用的 机器名字 转换成 IP地址 。   2.域名到IP地址的解析过程:当某一个应用进程需要把主机名解析为IP地址时,该应用进程就 调用解析程序 ,并成为DNS的一个客户;把待解析的 域名放在DNS请求报文中 ,以 UDP用户数据报方式 发给本地域名服务器(使用UDP是为了减少开销);本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信;   3.域名解析过程     ①递归查询(靠别人,少用):如果主机所询问的本地域名服务器不知道被查询的IP地址

android 应用层如何连接rild

自闭症网瘾萝莉.ら 提交于 2019-12-09 18:35:07
连接rild的方式,一种是通过调用framework接口来实现,通过类似PhoneFactory.getDefaultPhone()方式,当然如果要发送自定义的指令,还要增加相应的接口指令,比较麻烦,研究后再补上相关信息 还有别一种方式,就是直接通过socket连接,用有名socket进行连接。比如"rild"这个,如果直接连接,也许资源已占无法连接传递信息。但如果连接“rild-debug”则可以顺利连接。 告别要注意的是: AndroidManifest.xml 添加android:sharedUserId="android.uid.system" activity中要添加 android:process="com.android.phone" 使它在进程com.android.phone中 这样才有权限编译运行,当然要在源码下编译才可以,要不然要提示 has no signatures that match those in shared user android.uid.system这样的信息。 解释一下原理,首先加入android:sharedUserId="android.uid.system"这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system

TCP之深入浅出send和recv

坚强是说给别人听的谎言 提交于 2019-12-09 12:26:55
在这篇文章中,我用深入浅出socket选项行为中的4个选项来介绍send和recv的行为 SO_RCVBUF SO_SNDBUF 先明确一个概念:每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用read进行读取的话,此数据会一直缓存在相应socket的接收缓冲区内。再啰嗦一点,不管进程是否读取socket,对端发来的数据都会经由内核接收并且缓存到socket的内核接收缓冲区之中。read所做的工作,就是把内核缓冲区中的数据拷贝到应用层用户的buffer里面,仅此而已。进程调用send发送的数据的时候,最简单情况(也是一般情况),将数据拷贝进入socket的内核发送缓冲区之中,然后send便会在上层返回。换句话说,send返回之时,数据不一定会发送到对端去(和write写文件有点类似),send仅仅是把应用层buffer的数据拷贝进socket的内核发送buffer中。后续我会专门用一篇文章介绍read和send所关联的内核动作。每个UDP socket都有一个接收缓冲区,没有发送缓冲区,从概念上来说就是只要有数据就发,不管对方是否可以正确接收,所以不缓冲,不需要发送缓冲区。

(五):网络协议

和自甴很熟 提交于 2019-12-09 10:28:41
做个笔记。。。。 ** 一: 网络协议 ** 为网络中的数据交换而建立的规则、标准或约定成为网络协议,也可简称为协议。其主要由以下三个要素组成,即: 1) 语法,即数据与控制信息的结构或格式。 2) 语义,即需要发出何种控制信息,完成何种动作以及做出何种反应。 3) 同步,即事件实现顺序的详细说明。 ** 二: 协议的体系结构 ** 2.1 OSI的七层体系结构 1.物理层: 在物理层上所传数据的单位是比特(bit)。 而本层典型设备是 集线器(Hub) 2.数据链路层 :简称为 链路层 ,负责在两个相邻的节点间的线路上无差错地传送以帧为单位的数据,(l数据链路层将网络层交下来的IP数据报组装成帧)每帧包括一定的数据和必要地控制信息,在接收点接收到数据出错时要通知发送方重发,直到这一帧无误地到达接收点。 本层典型设备是 交换机(Switch) **3.网络层:**负责为分组交换往上的不同主机提供通信服务。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包(packet)进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报。 本层典型设备是 路由器(Router) **4.运输层:**负责向两个主机中进程之间的通信提供通用的数据传输服务。( 完成同处于资源子网中的两个主机间的连接和数据传输 ) 所谓通用,是指并不针对某个特定网络应用