传输层----管理端到端的通信连接
1、端口
使用端口(Port)来标记不同的网络进程
端口使用16位比特位表示(0~65535)
常用端口:
ftp----21 http---80 https---443 dns---53 telnet---23
2、各种协议
应用层: HTTP FTP SMTP POP3 ...
传输层: TCP UDP
网路层: IP
网络接口层: Ethernet PPP ...
3、UDP协议详解
UDP:(User Datagram Protocol 用户数据报协议);
UDP是一个简单协议;
数据报:应用层所传输过来的完整的数据,UDP协议不会对其进行合并、拆分,不做任何处理
UDP协议的长度由业务层传输的数据的长度决定
图:数据链路层数据帧的格式
3.1 UDP数据报格式
16位源端口号:源机器使用网络的进程;16位目的端口号:目的机器使用网络的进程;16位UDP长度:UDP数据报的长度,这个长度包括了UDP数据,最小值为8(仅包括UDP首部);16位UDP校验和:用于校验UDP在传输过程中是否发生错误。
3.2 UDP特点
UDP是无连接的协议:进行通信时,不需要提前简历连接;
UDP不能保证可靠的交付数据:“想发就发”,“无法保证数据在网络中是否丢失”;
UDP是面向报文传输的:应用层传输过来的数据报,UDP不会进行任何的处理;
UDP没有拥塞控制:无论网络是否拥塞,UDP都会把报文交付出去;
UDP的首部开销很小:首部--->源端口、目的端口、UDP长度、校验和,总共8个字节;
4、TCP协议详解
TCP:(Transmission Control Protocol):传输控制协议;是计算机网络中非常复杂的一个协议;
3.1 TCP协议的特点:
TCP是面向连接的协议:通信前需要建立连接才可以;
TCP的连接有两端(点对点通信);
TCP提供可靠的传输服务;
TCP协议提供全双工的通信;(全双工-----两端都可以同时的向对方发送数据,或者接受数据)
TCP是面向字节流的协议;(可能会对用户的数进行合并拆分)
3.2 TCP协议的头部 (首部)
(1)序号:0~2^32-1的范围;一个字节一个序号;数据首字节序号(TCP数据报文第一个字节的序号)
(2)确认号:0~2^32-1的范围;一个字节一个序号;期望收到的数据的首字节序号;(期望收到的下一个数据的首字节号)----- 确认号为N,则表示N-1序号的数据都已经收到。
(3)数据偏移:占4位,0~15,单位为32位字,每一个偏移都可以保证4个字节的偏移;数据偏移首部的距离;15*4 --- 最大偏移60个字节,所以TCP首部的长度为 20~60 个字节
(4)TCP标记:占6位,每一位各有不同的意义。 URG ACK PSH RST SYN FIN
URG:Urgent:紧急位,URG=1,表示紧急数据;
ACK:Acknowledement:确认位,ACK=1,确认号才生效
PSH:Push:推送为,PSH=1,尽快的把数据交付给应用层
RST:Reset:重置位,RST=1,重新建立连接
SYN:Synchronization:同步位,SYN=1 ,表示连接请求报文,同步连接的信息
FIN:Fininsh:终止位,FIN=1,表示释放连接
(5)窗口:占16位:0~2^16-1;窗口指明允许对方发送的数据量;
(6)紧急指针:紧急数据(URG=1);指定紧急数据在报文的位置
(7)TCP选项:最多40个字节;来支持未来的扩展
4、可靠传输的基本原理
(1)停止等待协议:
无差错情况
出差错的情况
发送方发送的数据丢失,接收方一直没有收到发送方的消息,一定时间之后发送方没有收到确认消息,发送方就会重新发送消息--------超时重传
接收方确认的数据丢失,发送方在一定时间内没有收到确认消息,还是会重新发送数据,---超时重传
超时重传
a. 发送的消息在路上丢失了;
b. 确认的消息在路上丢失了;
c. 确认的消息很久才到;
TCP协议的定时器(超时定时器):每发送一个消息,都需要设置一个定时器,用来计算消息是否过期,消息是否正确发送给了对方
停止等待协议是最简单的可靠传输协议;停止等待协议对信道的利用效率不高;
(2)连续ARQ协议:(在停止等待协议的基础上进行改造的)
ARO( Aautomatic Repeat reQuest:自动重传请求)
既然单个发送和确认效率低,可不可以批量发送和确认呢?
累计确认:只要收到了某一个消息的确认,那么这个消息之前的所有消息都已经收到了。减少了确认报文的数量,提高了效率。