四层网络协议

上软件工程的时候,课本知识嘛是一点都没听,废话记住不少
单独记一下四层网络协议,毕竟和课本知识不一样
参考OSI与TCP
四层网络协议
四层网络协议

1.OSI七层和TCP/IP四层的关系

1.1 OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。

1.2 OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。

1.3 OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。

TCP:transmission control protocol 传输控制协议

UDP:user data protocol 用户数据报协议
四层网络协议
IP层传输单位是IP分组,属于点到点的传输;TCP层传输单位是TCP段,属于端到端的传输

UDP

四层网络协议
UDP 是无连接的,即发送数据之前不需要建立连接。

UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。

UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。

UDP 支持一对一、一对多、多对一和多对多的交互通信。

UDP 的首部开销小,只有 8 个字节

TCP

四层网络协议
TCP 提供可靠交付的服务,保证数据无差错、不丢失、不重复、按序到达。

TCP 提供全双工通信

TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP 报文段分为首部和数据两部分

1、第一个4字节:
(1)源端口,16位;发送数据的源进程端口
(2)目的端口,16位;接收数据的进程端口
2、第二个4字节与第三个4字节
(1)序号,32位;代表当前TCP数据段第一个字节占整个字节流的相对位置
(2)确认号,32位;代表接收端希望接收的数据序号,为上次接收到数据报的序号+1,当ACK标志位为1时才生效。
3、第四个4字节:
(1)数据偏移,4位;实际代表TCP首部长度,最大为60字节。
(2)6个标志位,每个标志位1位;
SYN,为同步标志,用于数据同步;
ACK,为确认序号,ACK=1时确认号才有效;
FIN,为结束序号,用于发送端提出断开连接;
URG,为紧急序号,URG=1是紧急指针有效;
PSH,指示接收方立即将数据提交给应用层,而不是等待缓冲区满;
RST,重置连接。
(3)窗口值,16位;标识接收方可接受的数据字节数。详解可参看:http://www.cnblogs.com/woaiyy/p/3554182.html
4、第五个4字节
(1)校验和,16位;用于检验数据完整性。
(2)紧急指针,16位;只有当URG标识位为1时,紧急指针才有效。紧急指针的值与序号的相加值为紧急数据的最后一个字节位置。用于发送紧急数据。

IP报文

四层网络协议
1、第一个4字节(也就是第一行):

(1)版本号(Version),4位;用于标识IP协议版本,IPv4是0100,IPv6是0110,也就是二进制的4和6。
(2)首部长度(Internet Header Length),4位;用于标识首部的长度,单位为4字节,所以首部长度最大值为:(2^4 - 1) * 4 = 60字节,但一般只推荐使用20字节的固定长度。
(3)服务类型(Type Of Service),8位;用于标识IP包的优先级,但现在并未使用。
(4)总长度(Total Length),16位;标识IP数据报的总长度,最大为:2^16 -1 = 65535字节。
2、第二个四字节:

(1)标识(Identification),16位;用于标识IP数据报,如果因为数据链路层帧数据段长度限制(也就是MTU,支持的最大传输单元),IP数据报需要进行分片发送,则每个分片的IP数据报标识都是一致的。
(2)标志(Flag),3位,但目前只有2位有意义;最低位为MF,MF=1代表后面还有分片的数据报,MF=0代表当前数据报已是最后的数据报。次低位为DF,DF=1代表不能分片,DF=0代表可以分片。
(3)片偏移(Fragment Offset),13位;代表某个分片在原始数据中的相对位置。
3、第三个四字节:

(1)生存时间(TTL),8位;以前代表IP数据报最大的生存时间,现在标识IP数据报可以经过的路由器数。
(2)协议(Protocol),8位;代表上层传输层协议的类型,1代表ICMP,2代表IGMP,6代表TCP,17代表UDP。
(3)校验和(Header Checksum),16位;用于验证数据完整性,计算方法为,首先将校验和位置零,然后将每16位二进制反码求和即为校验和,最后写入校验和位置。
4、第四个四字节:源IP地址

5、第五个四字节:目的IP地址
太网帧中的数据长度规定最小46字节,最大1500字节。