5.1 传输层寻址与端口
寻址方式:
数据链路层:MAC地址
网络层:IP地址
运输层:端口
端口就是传输层服务访问点。不同的应用进程的报文可以通过不同的端口向下交付给传输层,再往下由传输层统一处理交给网络层,这一过程称为复用。相反,传输层从网络层收到数据统一处理后再根据不同的端口号向上交付给不同的应用进程,这一过程称为分用。从这个意义上讲,端口就是用来标志应用层的进程。
使用16bit,取值范围0~65535,仅用于本地使用,不同计算机的相同端口号不冲突
分类:
熟知端口号,0~1023;
登记端口号,1024~49151;
短暂端口号,49152~65535
5.2 无连接服务与面向连接服务
面向连接服务:基于电话系统模型,用户首先要建立一个连接,然后使用该连接,最后释放连接。TCP
无连接服务:基于邮政系统模型,每一条报文都携带了完整的目标地址,所以每条报文都可以被系统独立地路由。UDP
5.3 传输连接的建立与释放
建立连接用于解决的问题:
1、是双方知道对方的存在
2、协商一些参数
3、是双方能对运输实体资源进行分配
三报文握手建立连接:
初始C/S为CLOSED状态,S创建传输控制块后进入LISTEN状态,C创建传输控制块后发送请求连接报文,SYN=1,seq=x后进入SYN-SENT状态;S收到发送确认报文SYN=1,ACK=1,seq=y,ack=x+1 并进入SYN-RCVD状态;C收到后发送确认报文ACK=1,seq=x+1,ack=y+1并进入ESTABLISHED状态;S收到后也进入ESTABLISHED状态,建立连接完成
不用两次握手的原因:防止第一次发送的请求连接报文发生超时重传,建立连接完成并释放后,此报文才到达S导致再次建立连接,而C不再理睬S的确认报文导致S长时间处于连接状态。
四报文挥手释放连接:
假设C主动关闭,C发送释放请求报文FIN=1,ACK=1,seq=u,ack=v 并进入FIN-WAIT1状态;S收到后发送确认报文ACK=1,seq=v,ack=u+1 并进入CLOSE-WAIT状态,此时S任然可以接受C-S的数据,等待S应用进程确认可以释放连接后,S发送释放报文FIN=1,ACK=1,seq=w,ack=u+1 并进入LAST-ACK状态,C收到后发送确认报文ACK=1,seq=u+1,ack=w+1 并进入TIME-WAIT状态,等待2MSL后关闭,S收到确认报文后也关闭,释放连接结束,其中MSL为最长报文段寿命
为什么等待2MSL后才关闭:防止C–>S的最后确认报文在传输过程中丢失,导致S–>C不断发送最后确认报文,而无法关闭S
5.4 UDP的优点
优点:
1、发送数据之前不需要建立连接,发送数据完后不需要释放连接,因此减少了开销和发送数据之前的时延;
2、UDP不使用拥塞控制,不保证可靠交付,因此主机不需要维持具有许多参数的复杂的连接状态表;
3、UDP用户数据报只有8字节的首部开销,比TCP的20字节的首部要短;
4、由于UDP没有拥塞控制,因此网罗出现的拥塞不会使源主机的发送速率降低。
5.5 UDP和TCP报文段报头格式
TCP:
UDP报文首部8B,四个字段,每个字段均2B
源端口 目的端口 长度 校验和
5.6 TCP的流量控制
如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。
滑动窗口:利用滑动窗口协议与接收方的流量控制来控制发送发的发送窗口流量
5.7 TCP的拥塞控制
拥塞:网络需求超过可提供的可用部分,网络性能变坏,出现拥塞不控制会导致吞吐量随负荷的增大而减小
不考虑流量控制的情况下拥塞窗口cwnd = 发送窗口swnd,慢开始门限ssthresh:
1、当cwnd<ssthresh时 慢开始
2、当cwnd>ssthresh时 拥塞避免
3、当cwnd=ssthresh时 可慢开始也可拥塞避免
快重传:数据包超时,收到3个连续重复确认后立刻重传,不用等待超时再重传
快恢复:ssthresh和cwnd同时减半(也有ssthresh减半,cwnd值设置为该ssthresh+3)
5.8 TCP传送连接的管理
TCP连接的端口:套接字(socket),在IP地址后面拼接端口号
表示:socket = (IP;port)
TCP是面向连接的协议,传送连接用于传输TCP报文,每次传输必须建立和释放连接
运输连接的过程:
1、建立连接
2、数据传输
3、释放连接