计算机网络——第五章 运输层


title: 计算机网络——第五章 运输层
tag: 计算机网络
category: 计算机网络
date: 2018-06-21


计算机网络——第五章 运输层

名词

  • TPDU:运输协议数据单元,对等传输实体在通信的时传送的数据单元
  • 端口:16位,只具有本地意义
  1. 服务端使用的端口号

(1)熟知端口号或系统端口号,数值为0~1023
FTP:21
TELNET:23
SMTP:25
DNS:53
TFTP:69
HTTP:80
SNMP:161
SNMP(trap):162
HTTPS:443
(2)登记端口号:数值为1024~49151

  1. 客户端使用的端口号:数值为49152~65535,仅在客户进程运行时才动态选择,又叫短暂端口号
  • 一个进程的全网唯一标识:协议+本地地址+本地端口号
  • 一个完整的进程通信标识:协议+本地地址+本地端口+远程地址+远地端口号

用户数据报协议UDP

*传输单元:*UDP用户数据报

  • 特点:
    (1)UDP是无连接的,不需要建立连接
    (2)UDP使用尽最大努力交付,即不可保证可靠交付,不需要维持连接状态表
    (3)UDP是面向报文的,发送时直接添加首部后向下交付IP层,对报文既不合并也不拆分,而是保留这些报文的边界(不处理报文,应用层交给UDP多长报文,就多长照常交给IP,一次一个报文),接收时也什么不用处理,去掉UDP首部后直接交付给应用层
    (4)UDP没有拥塞控制,网络拥塞时不会使源主机发送效率降低,没有重传,实时性要求高,准确性要求不高
    (5)UDP支持一对一、一对多、多对一和多对多的交互通信
    (6)UDP的首部开销小,只有8个字节

  • 首部格式:

(1)源端口:2字节
(2)目的端口:2字节
(3)长度:2字节,UDP用户数据报的长度,最小为8
(4)检验和:2字节,检测UDP用户数据报在传输中是否有错

*计算检验和:*计算时,在UDP用户数据报之前增加12字节的伪首部(检验和时才会添加),得到一个临时的UDP用户数据报,IP数据报检验只检验IP首部,UDP的检验和是把首部和数据部分一起都检验
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nL6TPSeP-1586740468330)(https://upload-images.jianshu.io/upload_images/4061843-8df9e51565bb1f29.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]



传输控制协议TCP

*传输单元:*TCP报文段

  • 首部格式:
    20字节固定,后面4n可变长度,最小长度20字节
    (1)源端口和目的端口:各占2字节
    (2)序号:4字节,0~232-1,使用mod232运算
    (3)确认号:4字节,期望收到下一个报文段的第一个数据字节的序号
    (4)数据偏移:4位,指出数据起始处距离报文段的起始处有多远
    (5)保留:6位
    (6)紧急URG(URGent):为1时表示紧急指针有效,改变传输的优先级,带有紧急的优先传送
    (7)确认ACK:=1时有效
    (8)推送PSH:当通信时,有时在一端的应用程序希望在键入一个命令后立即受到对方的响应
    (9)复位RST:=1,表示TCP连接中出现严重差错
    (10)同步SYN:在连接建立时来同步序号,=1且ACK=0表示连接请求报文,=1且ACK=1表示同意建立连接
    (11)终止FIN:释放连接,=1表示发送方的数据已发送完毕,并要求释放连接
    (12)窗口:2字节,指的是发送本报文段的一方的接受窗口(不是自己的发送窗口),作为接收方让发送方设置其发送窗口的依据(允许发送方发送的数据量)
    (13)检验和:2字节,检验的范围包括首部和数据
    (14)紧急指针:2字节,URG=1有效
    (15)选项:最大报文段长度MSS,是每一个TCP报文段中的数据字段的最大长度

  • 特点:
    (1)TCP是面向连接的运输层协议,必须建立TCP连接
    (2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
    (3)TCP提供可靠交付的服务
    (4)TCP提供全双工通信,TCP允许通信双方的应用进程在任何时候都能发送数据,两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据
    (5)面向字节流,传送的时候是字节流


  • TCP的连接:
    连接的端点是套接字或插口:IP地址+端口号
    三次握手:image.png此处当B确认并同步报文可以分成两个,就会变成4次握手
    (1)A请求报文
    (2)B确认,并同步,SYN=1
    (3)A再一次确认,建立连接(防止A的第一次已失效的请求报文传送到了B)

四次挥手:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xvG0Slif-1586740468338)(https://upload-images.jianshu.io/upload_images/4061843-34846c8f9e910601.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](1)先A请求关闭,关闭A的发送,A不在发送数据但是要接收
(2)B确认,但B会继续发送数据,A会继续接收
(3)B关闭发送,B不在发送数据
(4)A确认,B先关闭
(5)一段时间后,A自动关闭,断开连接

有限状态机:image.png


  • **停止等待协议:**等待确认再发送下一个分组
    无差错情况:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vQhg37hr-1586740468346)(https://upload-images.jianshu.io/upload_images/4061843-97e52424b5d1e59a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

出现差错:
如果出现差错,就丢弃分组且不会发出确认,A一定时间后没有收到确认就重传

确认丢失和确认迟到:
image.png

信道利用率:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ctX7vmRS-1586740468352)(https://upload-images.jianshu.io/upload_images/4061843-9eb652b0a947a516.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vAwrynGM-1586740468355)(https://upload-images.jianshu.io/upload_images/4061843-19478707ccdf0191.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

  • 连续ARQ协议
    滑动窗口,发送一个窗口的分组,这个窗口中的分组不用等待确认,连续发送,然后确认后在移动窗口

  • 可靠传输的实现:
    字节为单位的滑动窗口,发送窗口在连接建立时由双方商定
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vgEPo2r4-1586740468358)(https://upload-images.jianshu.io/upload_images/4061843-62d9e1d3c62cbe4a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]发送窗口表示:在没有收到B的确认的情况下,A可以连续把窗口内的数据都发送出去,凡是已经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。发送窗口里面的序号表示允许发送的序号,A的发送窗口一定不能超过B的接收窗口的数值。发送窗口后沿的变化有不动(没有收到新的确认)和前移(收到了新的确认)两种,发送窗口的前沿也可能向后收缩。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MqPPRL3p-1586740468359)(https://upload-images.jianshu.io/upload_images/4061843-0d1c4b58e46e8998.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]发送窗口需要三个指针P1、P2、P3来判定状态。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RFrJy0Eq-1586740468361)(https://upload-images.jianshu.io/upload_images/4061843-35fa04c029079037.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6MC5dkse-1586740468363)(https://upload-images.jianshu.io/upload_images/4061843-5cb4b8ac34f2df81.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]发送缓存:
(1)存放发送应用程序传送给发送方TCP准备发送的数据
(2)存放TCP已发送出但尚未收到确认的数据
接收缓存:
(1)存放按序到达的、但尚未被接收应用程序读取的数据
(2)未按序到达的数据
如果接收应用程序来不及读取收到的数据,接收缓存最终就会被填满,使接收窗口减小到0,反之,接收窗口就增大,但最大不能超过接收缓存的大小


  • 超时重传时间的选择:
    RTT:报文段的往返时间
    RTTs:平滑的往返时间,RTT的加权平均返回时间
    公式:RTTs = (1-@)* 旧RTT+@ * 新RTT
    其中@一般为0.125
    RTO:超时重传时间
    RTTd:RTT的偏差的加权平均值
    公式:新的RTTd=(1-b)* 旧的RTTd+b * |RTTs - 新RTT|
    b一般为0.25
    公式:RTO = RTTs + 4*RTTd

  • TCP的流量控制:
    让发送方的发送速率不要太快,要让接收发来的及接收
    image.png

  • TCP的拥塞控制:
    防止过多的数据注入到网络,使路由器或链路不至于过栽
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvx51U05-1586740468367)(https://upload-images.jianshu.io/upload_images/4061843-b40752b75b15832c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
    (1)慢开始和拥塞避免
    慢开始:当主机开始发送数据时,先探测一下,由小到大逐渐增大发送窗口,每收到一个确认后拥塞窗口就增加最多一个SMSS的数值image.png
    拥塞避免:让拥塞窗口cwnd缓慢的增大,每经过一个RTT就把发送方的拥塞窗口+1[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OyPMPZR8-1586740468371)(https://upload-images.jianshu.io/upload_images/4061843-f31e1aef8330e400.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

(2)快重传和快回复
快重传:让发送方尽早知道发生了个别报文段的丢失,当发送方一连收到3个重复确认,就立即重传
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5C3yVnFh-1586740468374)(https://upload-images.jianshu.io/upload_images/4061843-c0ad9c26830ce5b3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

**主动管理队列AQM:**当在队列长度达到某个值得警惕的数值时,就主动丢弃到达的分组,以此提醒发送方放慢发送速率

发布了43 篇原创文章 · 获赞 10 · 访问量 6998

猜你喜欢

转载自blog.csdn.net/baidu_36959886/article/details/105481392