网络编程中的概念再补充
来源:互联网 发布:控制面板windows功能 编辑:程序博客网 时间:2024/05/22 17:28
ISO的开放互联网模型(OSI)
TCP回射客户/服务器模型总结
- OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardization)国际标准化组织定义的网络分层模型,共七层。
- 物理层(Physical Layer):物理层定义了所有电子及物理设备的规范,为上层的传输提供了一个物理介质,本层中数据传输的单位为比特(bit)。属于本层定义的规范有EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等,实际使用中的设备如网卡等属于本层。
- 数据链路层(Data Link Layer):对物理层收到的比特流进行数据成帧。提供可靠的数据传输服务,实现无差错数据传输。在数据链路层中数据的单位为帧(frame)。属于本层定义的规范有SDLC、HDLC、PPP、STP、帧中继等,实际使用中的设备如switch交换机属于本层。
- 网络层(Network Layer):网络层负责将各个子网之间的数据进行路由选择,分组与重组。本层中数据传输的单位为数据包(packet)。属于本层定义的规范有IP、IPX、RIP、OSPF、ICMP、IGMP等。实际使用中的设备如路由器属于本层。
- 传输层(Transport Layer):提供可靠的数据传输服务,它检测路由器丢弃的包,然后产生一个重传请求,能够将乱序收到的数据包重新排序。
- 会话层(Session Layer):管理主机之间会话过程,包括会话建立、终止和会话过程中的管理。
- 表示层(Presentation Layer):表示层对网络传输的数据进行变换,使得多个主机之间传送的信息能够互相理解,包括数据的压缩、加密、格式转换等。
- 应用层(Application Layer):应用层与应用程序界面沟通,以达至展示给用户的目的。 在此常见的协定有: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等
- 结论:传输层能做差错控制。。对IP包进行排序 IP路由
OSI和邮件发送
TCP/IP四层模型
和OSI七层的不同
TCP/IP主要协议
运行FTP的两台主机
通过路由器连接的网络
- (对等通信、封装、分用、端口)
对等通讯
封装(Encapsulation)
分用(Demultiplexing,解封)
端口
- 众所周知端口(Well Known Ports):从0到1023,这些端口由IANA分配和控制它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:21端口为ftp服务端口。
- 注册端口(Registered Ports):从1024到49151。它些端口不受IANA控制,但由IANA登记并提供使用情况清单。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:1433 Microsoft SQL服务端口
- 动态或私有端口(Dynamic or Private Ports):从49152到65535。IANA不管这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
TCP/IP各层报文
以太网帧格式
说明1:链路层数据包,称为以太网帧。
说明2:链路层不识别IP地址(逻辑地址,公网IP),链路层识别物理网卡MAC地址。
说明3:需要根据IP地址找到对方的MAC地址。这个过程称为:地址解析,也就是ARP协议。(MAC—)IP地址方向地址解析 RARP)。
说明4:应用层根据对等方的IP地址进行通讯,在数据封装过程中,链路层有需要目的地址的MAC网卡地址?怎么样解决这个问题? 需要将IP地址转换成MAC地址,也就是地址解析。
ARP地址解析协议
以太网的MTU和路径MTU
以太网MTU
- 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit)
- 如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就要进行分片(Fragmentation),把数据报分成若干片,这样每一片都小于MTU。
- 当网络上的两台主机互相进行通信时,两台主机之间要经过多个网络,每个网络的链路层可能有不同的MTU,其中两台通信主机路径中的最小MTU被称作路径MTU。
IP数据报
- 版本号,目前取值4
- 首部长度,4个字节为单位,取值范围5~15
- 服务类型,指定传输的优先级、传输速度、可靠性和吞吐量等
- 报文总长度,最大长度为65535字节
- 报文标识,唯一标识一个数据报,如果数据报分段,则每个分段的标识都一样
- 标志,最高位未使用,定义为0,其余两位为DF(不分段)和MF(更多分段)
- 段偏移量,以8个字节为单位,指出该分段的第一个数据字在原始数据报中的偏移位置
- 生存时间,取值0~255,每经过一个路由节点减1,为0时被丢弃
- 协议,指明该数据报的协议类型,如1为ICMP,4为IP,6为TCP,17为UDP等
- 首部校验和,每通过一次网关都要重新计算该值,用于保证IP首部的完整性
- 选项,长度可变,提供某些场合下需要的控制功能,IP首部的长度必须是4个字节的整数倍,如果选项长度不是4的整数倍,必须填充数据
ICMP协议
ICMP协议说明
- ICMP协议用于传递差错信息、时间、回显、网络信息等控制数据
- 当你ping 一台主机想看它是否运行时,就产生了一条ICMP 信息。远程主机将用它自己的ICMP 信息对ping 请求作出回应。
ICMP协议
- 本身是IP的一部分。
- 用途:网关或者目标机器利用ICMP与源通讯,当出现问题时,提供反馈信息
- 在IP协议栈中必须实现
- 特点:
- 其控制能力并不用于保证传输的可靠性
- 它本身也不是可靠传输的
- ICMP包含在IP数据包的净荷数据中,IP头中协议类型为1
- ICMP数据的第一个字节代表ICMP报文的类型,它决定了后续数据的格式
ICMP数据包
- ICMP包含在IP数据包的净荷数据中,IP头中协议类型为1
- ICMP数据的第一个字节代表ICMP报文的类型,它决定了后续数据的格式
ICMP报文类型
报文类型说明
- 0 Echo Reply
- 3 Destination Unreachable
- 4 Source Quench
- 5 Redirect
- 8 Echo
- 11 Time Exceeded
- 12 Parameter Problem
- 13 Timestamp
- 14 Timestamp Reply
- 15 Information Request
- 16 Information Reply
- 17 Address Mask Request
- 18 Address Mask Reply
报文分类
- ICMP差错报文
- 目的不可达报文(类型3)
- 超时报文(类型11)
- 参数出错报文(类型12)
- ICMP控制报文
- 报源抑制报文(类型4)
- 重定向(类型5)
- ICMP请求/应答报文
- 回送请求和响应报文(类型0和8)
- 时间戳请求和响应报文(类型13和14)
- 地址掩码请求和响应报文(类型17和18)
- 其他
ICMP Echo报文
- 类型:0表示Echo Reply,8表示Echo
- 代码:0
- 标识符:标识一个会话,例如,用进程ID
- 序号:例如每个请求增1
- 选项数据:回显
ICMP 目的不可达报文
- 类型:3
- 代码:0表示网络不可达,1表示主机不可达;
2表示协议不可达;3表示端口不可达;等等 - 出错的IP包的IP首部+原始IP数据包中前8个字节
UDP数据报
TCP报文段
协议描述
- 源端口号和目的端口号:源和目的主机的IP地址加上端口号构成一个TCP连接
- 序号和确认号:序号为该TCP数据包的第一个数据字在所发送的数据流中的偏移量;确认号为希望接收的下一个数据字的序号;
- 首部长度,以4个字节为单位,通常为20个字节
- 6个标志位:
- URG:如果使用了紧急指针,URG置1,紧急指针为当前序号到紧急数据位置的偏移量
- ACK:为1表示确认号有效,为0表示该TCP数据包不包含确认信息
- PSH:表示是带有PUSH标志的数据,接收到数据后不必等缓冲区满再发送
- RST:用于连接复位,也可用于拒绝非法的数据或拒绝连接请求
- SYN:用于建立连接,连接请求时SYN=1,ACK=0;响应连接请求时SYN=1,ACK=1
- FIN:用于释放连接,表示发送方已经没有供发送的数据
- 窗口大小:表示在确认字节后还可以发送字节数,用于流量控制
- 校验和:覆盖了整个数据包,包括对数据包的首部和数据
- 选项:常见的选项是MSS(Maximum Segment Size)
连接建立三次握手
连接终止四次握手
TCP如何保证可靠性
- 应用数据被分割成TCP认为最适合发送的数据块,称为段传递给IP层。
- 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
- 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
- TCP将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。如果收到段的校验和有差错,TCP将丢弃这个报文段并且不确认(导致对方超时重传)
- TCP承载于IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对收到的数据进行重新排序。
- IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
- TCP还能提供流量控制。TCP连接的每一方都有一定大小的缓冲空间。
综合案例
数据在网络中传输过程
- 步骤a:应用程序ping会判断发送的是主机名还是IP地址,调用函数gethostbyname()解析主机机B,将主机名转换成一个32位的IP地址。这个过程叫做DNS域名解析
- 步骤b:ping程序向目的IP地址发送一个ICMP的ECHO包
- 步骤c:将目标主机的IP地址转换为48位硬件地址,在局域网内发送ARP请求广播,查找主机B的硬件地址。
- 步骤d:主机B的ARP协议层接收到主机A的ARP请求后,将本机的硬件地址填充到应答包,发送ARP应答到主机A。
- 步骤e:发送ICMP数据包到主机B
- 步骤f:主机B接收到主机A的ICMP包,发送响应包。
- 步骤g:主机A接收到主机B的ICMP包响应包。
其他补充
主要协议及其关系
TCP/IP协议栈
0 0
- 网络编程中的概念再补充
- 网络编程中的几个概念
- 21---网络编程(补充)
- 网络编程中的阻塞,非阻塞、同步,异步概念
- 网络编程相关概念
- 网络编程-了解概念
- 网络编程中概念
- java网络编程概念
- 网络编程概念
- 电信编程中的概念
- 网络编程-基于UDP的Socket网络编程(补充)
- 网络编程概念全面接触
- Unix网络编程基础概念
- java网络编程基础概念
- Windows网络编程相关概念
- 网络编程(概念)自己理解
- Java网络编程基础概念
- 基本网络概念(Java网络编程)
- percona-toolkit工具包的安装和使用
- 使用DatagramSocket发送、接收数据(2)---server端
- Android自定义View(五)_Canvas之绘制基本形状
- Hive源码分析一
- vs2010程序运行出错 link : fatal error lnk1123: 转换到 coff 期间失败: 文件无效或损坏
- 网络编程中的概念再补充
- ServletContextListener,HttpSessionListener,ServletRequestListener监听器
- Android自定义ListView和GridView解决滑动冲突和显示不全
- 解决cxf+bboss发布的webservice缺少<wsdl:types>和<wsdl:message>标签的问题
- [LeetCode]413. Arithmetic Slices
- SAE平台fwrite,file_put_contents等函数写操作
- 有关kmeans训练结果不一样的问题
- 数据库范式
- 逻辑运算实现加减法