一、传输层
(一)
传输层提供的服务
1.
传输层的功能:为应用进程提供端到端的逻辑通信。端系统而非路由器中实现运输层。运输层分组称为报文段。
2.
传输层寻址与端口:IP+端口号就可以唯一地定位网络上一台计算机的一个应用进程。0到1023为系统端口号,其中21为ftp、80为http、53为DNS、25为smtp。
3.
无连接服务与面向连接服务:
a)
无连接服务:发送报文前,发送发和接收方不握手。
b)
面向连接服务:发送报文前,发送方和接收方要先握手。
(二)
UDP协议:除了多路复用/多路分解和轻量的差错检查之外不做什么。
1.
UDP数据报:首部有四个字段:源端口号、目的端口号、长度和检差和字段,长度都为两字节。
2.
UDP校验:将报文段每16个比特(两字节)相加,结果取反得到检差和。检验时,将报文段每16个比特和检查和字段相加,如果结果为FF、那么认为无错。
注:UDP面向报文段,即UDP不分割报文,应用层交付多大的报文,UDP就发送多大的报文,而把分割的任务留给网络层。
(三)
TCP协议
1.
TCP段:固定的20字节首部,后面有4N字节的可选项。
a)
源端口号、目的端口号各两字节。
b)
序号:4字节。
c)
确认号:4字节,希望收到的下一个报文段的第一个数据字节的序号。
d)
首部长度:4位。最大长度为60,此字段空就表示长度为20。
e)
保留字段:6位,目前置0。
f)
控制位:6位:为1时有效。
i.
紧急:URG。表示此报文为高优先级数据。
ii.
ACK:
iii.
PSH:此位有效的报文段会被立刻发送,立刻交付。
iv.
RST:释放链接,重建链接。
v.
SYN:同步。SYN=1,ACK=0,为连接请求报文。SYN=1,ACK=1为相应的相应报文。
vi.
FIN:终止。为1时,发送完毕,释放连接。
g)
窗口:2字节。
h)
检验和:2字节
i)
其他。MSS:最大报文段长度。MSS+首部长度=TCP报文长度。
2.
TCP连接管理
a)
连接建立:三次握手的主要目的是为了防止已失效的连接请求被服务器端响应,而浪费资源。
i.
客户端发送请求报文段。SYN=1、ACK=0并且序号字段随机初始化为x。
ii.
服务器端发送确认报文段SYN=1、ACK=1、确认号为:x+1,序号字段随机初始化为y。
iii.
客户发送确认段报文。ACK=1、确认号=y+1、序号=x+1
b)
数据传送
c)
连接释放:需要经过四次握手
i.
客户端发送释放报文段:FIN为1。此时序号=u
ii.
服务器端发送确认:ACK=1,序号=v,确认号为u+1。如果在这一步之.后服务器端还有信息要发送可以继续发送,如果没有信息要发送了。就进行iii。
iii.
服务器端发送释放报文: FIN=1,序号=v,确认号=u+1。
iv.
客户端发送确认报文:ACK=1,确认号=v+1,序号为u+1.
3.
TCP可靠传输:各种情况下发送发和接收方的动作。简而言之:收到确认,超时重传。超时后会加倍时间间隔。收到三次冗余ACK之后就会快速重传。
4.
TCP流量控制与拥塞控制
a)
流量控制:设置持续计数器,当收到零窗口控制的时候启动持续计数器,当持续计数器到时后,就发送零窗口探测报文段,这样就可以避免死锁。
b)
拥塞控制:
i.
如何限制发送速率:令发送方自己的发送窗口取为自己的拥塞窗口和接收方的接收窗口中较小的一个。
ii.
如何感知拥塞控制:出现超时或者收到三个冗余的ACK就认为出现拥塞。
iii.
使用什么算法改变发送速率。
1.
AIMD加性增、乘性减:每收到一个ACK就加拥塞窗口;每出现超时或者三个冗余ACK,拥塞窗口就减半。
2.
SS慢启动:TCP启动后直到出现第一个超时或者三个ACK之前,每收到一个ACK,拥塞窗口大小就乘2。
3.
超时进入慢启动:超时后进入慢启动阶段,直到拥塞窗口等于阈值时,进入加性增阶段。每发生一次超时事件,就将阈值设置为当前拥塞窗口的一半。
注:在网络众多的协议中,TCP无疑是第一重要的了,可以出题目的地方也非常多。