计算机网络-传输层

5.1 基本概念

只有主机才有的层次

  1. 传输层提供进程和进程之间的逻辑通信

  2. 复用(应用层所有的应用进程都可以通过传输层再传输到网络层)和分用(传输层从网络层收到数据后交付指明的应用进程)

  3. 传输层对收到的报文进行差错检测

传输层的两个协议

  1. TCP(面向连接的传输控制协议):可靠,面向连接,时延大,不提供广播/多播服务,适用于大文件

  2. UDP(无连接的用户数据报协议UDP):不可靠,无连接,时延小,适用于小文件

传输层的寻址与端口

端口是传输层的SAP,标识主机中的应用进程,分为逻辑端口/软件端口

 

 

 

 

 

 

 

5.2 UDP协议

  1. 无连接,减少时延

  2. 不保证可靠交付

  3. 面向报文

  4. 无拥塞控制

  5. UDP首部8B

UDP报文格式

 

 

 

 

 

UDP校验

 

 

 

 

接收端的校验码(求和取反)和发送端的校验码(全零)不同,所以若无差错,则接收端再次求和相当于总的结果+总的结果取反=全1

 

5.3 TCP协议

TCP协议的特点
  1. TCP是面向连接(虚连接)的传输层协议;点对点,且只有两个端点

  2. 每一条TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达

  3. TCP提供全双工通信:发送缓存(准备发送&已发送但未收到确认的数据)和接收缓存(按序到达但未被接受应用程序读取的数据)&不按序到达的数据

  4. TCP面向字节流:TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流

 

TCP报文段首部格式

  • 序号:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号

  • 确认号期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到

  • 数据偏移(首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B为单位

  • 六个位:

    • 紧急位URG:URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,配合紧急指针字段使用

    • 确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1

    • 推送位PSH:PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付

    • 复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输连接

    • 同步位(SYN):SYN=1时,表明是一个连接请求/连接接受报文

    • 终止位(FIN):FIN=1时,表明此报文段发送方数据已发完,要求释放连接

  • 窗口(接收窗口):指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量

  • 检验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6

  • 紧急指针:URG=1时才有意义,指出本报文段中紧急数据的字节数

  • 选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认

 

TCP连接管理

TCP的连接建立(三次握手)

 

 

TCP的连接释放(四次握手)

TCP的可靠传输

 

 

返回确认报文段之前,TCP缓存仍保留原报文段

 

 

累计确认,确保每个报文段都接收到

确认重传不分家,TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段;TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)

快速重传方法(冗余ACK/确认法)

 

 

TCP流量控制

 

 

通过B对A的发送窗口进行设置来控制流量(动态滑动窗口机制);发送方的发送窗口取决于接收窗口rwnd和拥塞窗口cwnd的最小值

 

TCP拥塞控制

相对于流量控制具有全局性

慢开始和拥塞避免

 

 

快重传和快恢复

 

 

 
posted @   程序圆CodeStar  阅读(117)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示