第五章 运输层

第五章 传输层

1. 概述

1. udp特点

  • 无连接。发送数据前不需要建立连接,发送结束也不需要断开连接
  • 最大努力交付 也就是不可靠交付
  • 支持1对1 1对多 多对多通信
  • 没有拥塞控制工能
  • 面向报文的,对于应用层下来的报文 不会拆分,也不会合并
  • 首部开销小 只有8个字节

2.tcp特点

  • 面向连接的,发送数据前需要建立连接,发送结束 需要断开连接
  • 可靠交付。没有失序 重复 丢失的问题
  • 支持支1对1通信
  • 全双工通信
  • 面向字节流

2. UDP(用户数据包协议)

image-20230307165947598

  • 源端口
  • 目标端口
  • 长度 UDP首部和UDP数据部分之和
  • 校验和 校验 数据和首部两部分

3.tcp(传输控制协议)

TCP首部

image-20230307173055170

TCP首部=固定(20字节)+选项(可变部分最大40字节)

  • 数据偏移:占4个二进制位,单位是4字节,最大值是60字节。

    • TCP报文中,数据部分的起始处 距离TCP报文段起始处的距离
    • 也是TCP首部的长度。首部最大长度是60字节,首部固定是20字节,所以选项最大是40字节
  • 检验和:检验的是数据部分和首部部分 以及12字节的伪首部。

  • 保留:目前还没有什么用途,全为0。

  • 源端口 目的端口 各占2字节

  • 序号:符号seq,TCP是面向字节流的,在一个TCP连接中 传送的字节流中的每个字节都是按顺序编号的。(为了做到可靠传输)

    • 占4字节 大小是 从[0,232-1],当序号增加到232-1之后,会从0开始
    • 举例:发送400字节。
      • 序号0 ,0-99字节
      • 序号100 ,100-199字节
      • 序号200 ,200-299字节
      • 序号300,300-399字节
  • 确认号:符号ack,占4字节 ,期望收到对方下一个报文段的第一个数据字节序号。

    • 当ACK=1的时候,确认号才有效。

    • TCP为了实现可靠传输,接收方在收到几个数据报后,就需要给发送方 发送一个确认数据报,告诉发送方下一个数据报该发送第多少个字节了。

    • 如果确认号是N,代表,发送方下一次要送第N个字节的数据,而且还代表接收方已经收到了N-1

      image-20230307175331135

  • 窗口:占2字节。TCP有流量控制功能,窗口值告诉对方(发送方):从本报文段的确认序号算起,接收方目前允许发送方发送的数据数量,单位是字节。

    • 距离 ack=10,rwnd=10 发送方可以发送 10-20这个范围里的数据。
  • 六个二进制位

    • URG:URG=1的时候,紧急指针字段有效。告诉系统报文段中有紧急数据,应尽快传送,不再按原来的排队顺序排队发送。
      • 实际上是让 发送端 快点发。
    • 推送PSH:当两个应用进程进行交互通信的时候,有时需要一方的指令能够得到对方的立即相应。
      • 实际上是让 接收方,快点往出取
    • 复位RST:RST=1,表明tcp连接出现了差错需要,重新连接
    • 同步SYN:TCP用于最初连接建立的同步序号。
      • SYN=1,ACK=0,代表这是个连接请求报文段
      • 如果对方同意建立连接:相应报文段中 :SYN=1,ACK=1
    • 确认ACK:当ACK=1,的时候,确认号 才有用。ACK=0的时候,确认号没有用。
      • 规定在连接建立后,所有的报文传送段必须把ACK设置为1
    • 终止FIN:用来释放连接。方FIN=1,表示此报文的发送方 数据已经发送完毕,并要求释放连接。
  • 紧急指针:当URG=1的时候才有效。指出 紧急数据的末尾在 报文段数据部分的位置

    • TCP报文段:固定首部20 ,数据部分是1000字节。URG=1,紧急指针值是100,代表 数据部分前100字节是紧急数据。

流量控制 和拥塞控制

  • 流量控制: 为了避免接收端 接受处理不过来,而调节发送端的发送速率,利用的是接收端的接受窗口 来调节发送端的滑动窗口

  • 拥塞控制:为了避免 网络拥堵,而调节发送端的发送速率,利用的是 拥塞窗口,来调节发送端的滑动窗口

    实际发送端的滑动窗口是 接收窗口和拥塞窗口的最小值

可靠传输的实现 --停止等待协议以及该进

停止等待协议:发送端 每发送一个数据,就等待接收端的确认,等收到确认了,才会发送下一个分组。分组需要编号

超时重传(自动重传请求ARQ):接受端每发送一个数据,就可是计时,如果在倒计时时间到 没有收到确认信息,就开始重传。

停止等待协议 信道利用率低,所以实际用的是 连续ARQ协议

TCP拥塞控制的四种算法: 慢开始 拥塞避免 快重传 快恢复

  • 慢开始:由小到大逐渐增大 拥塞窗口的数值,先初始拥塞窗口为1个最大报文段MSS,等收到确认报文之后,拥塞窗口再乘以2
  • 拥塞避免:当慢开始窗口增大到 门限值的时候,拥塞窗口 开始每次增加1
  • 快重传:当接受方受到一个失序的分组之后,就立马发出三个重复确认 ,告知发送方丢失的数据,并立马重传
  • 快恢复:当发送方 受到某个分组三次重复之后,门限值减半,而拥塞窗口也减为一半,而执行拥塞避免算法,而不是执行 慢开始算法

MSS:最大报文段 指的是tcp报文的数据部分最大长度

考题

1. 为什么在tcp首部里有一个首部长度字段 而在udp首部没有这个字段

tcp首部长度不固定 ,udp首部长度固定

2.为什么tcp首部中要把tcp的端口号放入最开始的4个字节

ICMP报文的数据部分 有 ip报文的首部和8个字节的ip数据包数据内容,这里边有tcp的源端口 和目标端口,当tcp收到这个icmp报文之后 可以知道那条连接出了错

3.端口的作用?

各种进程复用tcp udp协议,而一个进程和一个端口对应,通过端口就可以知道 接收端收到的数据应该交付给那个进程。

4.udp收到有错误的数据 如何处理

简单的丢弃

5.运输层tcp或者udp首部 伪首部的作用?

伪首部 既不向下传递也不向上交付,只是用来 计算检验和

6.套接字

端口加ip地址组成了套接字

posted @   XjtuSeLwh2017  阅读(101)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示