OSI模型分为七层
OSI把网络按照层次分为七层,由下到上分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
OSI | |
---|---|
应用层 | OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。 |
表示层 | 提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。 |
会话层 | 负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。 |
传输层 | 提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。 |
网络层 | 提供逻辑地址,供路由器确定路径。 |
数据链路层 | 将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。 |
物理层 | 在设备之间传输比特流,规定了电平、速度和电缆针脚。 |
数据封装与解封装图解
数据封装过程
解封装过程
传输层:TCP &UDP协议基本描述
TCP与UDP对比
传输控制协议(TCP) | 用户数据报协议(UDP) |
---|---|
面向连接 | 无连接 |
可靠传输 | 尽力而为的传输 |
支持流控及窗口机制 | 无流控及窗口机制 |
HTTP、FTP等 | TFTP、DNS、DHCP等 |
TCP报文:
源端口(Source Port):16bit, 表示报文发送方的端口号
目的端口(Destination port): 16bit,表示报文接收方的端口号
序列号(SN):32bit,标识了TCP报文中第一个byte在对应方向的传输中对应的字节序号。当SYN出现,序列码实际上是初始序列码(ISN),而第一个数据字节是ISN+1,单位是byte。比如发送端发送的一个TCP包净荷(不包含TCP头)为12byte,SN为5,则发送端接着发送的下一个数据包的时候,SN应该设置为5+12=17。通过序列号,TCP接收端可以识别出重复接收到的TCP包,从而丢弃重复包,同时对于乱序数据包也可以依靠系列号进行重排序,进而对高层提供有序的数据流。另外SYN标志和FIN标志在逻辑上也占用一个byte,当SYN标志位有效的时候,该字段也称为ISN(initial sequence number)。
确认号(ACK):32bit,标识了报文发送端期望接收的字节序列。如果设置了ACK控制位,这个值表示一个准备接收的包的序列码,注意是准备接收的包,比如当前接收端接收到一个净荷为12byte的数据包,SN为5,则发送端可能会回复一个确认收到的数据包,如果这个数据包之前的数据也都已经收到了,这个数据包中的ACK Number则设置为12+5=17,表示17byte之前的数据都已经收到了。在举一个例子,如