lec5-传输层原理与技术

发布于:2025-02-11 ⋅ 阅读:(71) ⋅ 点赞:(0)

lec5-传输层原理与技术

1. 传输层概述

1.1. 关键职责

  • flow control,流量控制
  • reliability,可靠性

1.2. TCP与UDP对比

  • 面向连接 / 不能连接
  • 对数据校验 / 不校验数据
  • 丢失重传 / 不会重传
  • 有确认机制 / 没有确认
  • 滑动窗口流量控制 / 不会流量控制

1.3. 关于端口(可能选择,记住一些)

  • 端口占据 2 Bytes, 数字 0 - 65535;
  • 端口可以分为熟知端口,和登记端口,短暂端口
    • 熟知端口:0-1023(0-255的端口是为了TCP和UDP服务保留的)
    • 登记端口:102-49151
    • 短暂端口:49152-65535

在这里插入图片描述

  • DHCP:服务器端口67,客户端口68;
  • FTP:端口21(控制),20(传数据);
  • TELNET:23;
  • DNS:53;
  • HTTP:80;
  • HTTPS:443;

1.4. socket

<ip_address, port>唯一确定套接字

<ip_address, port> 源加目的 -》唯一确定连接

2. TCP协议

2.1. TCP报文结构

在这里插入图片描述

  • 源端口,目的端口;

  • 序号:TCP为每一个字节进行编号,序号里是该报文的第一字节的序号;

  • 确认号:表示期望收到的下一个字节的编号(前面收到了);

  • 数据偏移(首部长度):4位,表示最多是60个字节长度(固定同样是20,最长同样是60,像IP)

  • URG:紧急情况;

  • ACK:确认,当ACK=1的时候,确认号才生效

  • PSH:推送,不必等缓冲区满

  • RST:出现严重错误,释放连接

  • SYN:同步,表示请求连接或接受连接

  • FIN:请求释放连接(ACK,SYN,FIN是3次握手,4次挥手的关键指示,需要记住

  • 窗口:占 2 字节,用来让对方设置发送窗口的依据,单位为字节。表示可以进行传输的窗口大小是多少,即告诉接收方最多能发给我多长的数据。(这里自然想到,如果是0怎么办,后面有计时器相关问题)

  • 校验和:检验的部分包括==数据和首部两部分==

  • 紧急指针,指出在本报文段中紧急数据共有多少字节,紧急数据放在本报文段最前面

2.2. 3次握手

在这里插入图片描述

  1. 客户请求(SYN),SYN表示请求建立,seq=x表示字节流
  2. 服务器收到(SYN,ACK),SYN表示同意建立,seq=y表示自己的字节流,(ACK=1且ack=x+1,两者要同时出现),表示前面收到了前x个字节了
  3. 客户受到(ACK),ACK表示确认,seq=x+1表示自己的字节流,ack表示受到了对方的前y个字节了
    (第三次就可以开始携带数据了)

注:首部也包括在字节的编号之中,不是只有数据进行编号

2.3. 停止等待协议

  • 发送段之后,暂时保留备份
    • 没有收到确认,就要重传
    • 收到确认,抛弃备份
    • 超时计时器:如果对方的应答超过一定的时间就直接进行重发
      (时间上需要大于 二倍的平均时间

2.4. 数据传输 - 丢失确认和确认延迟

  • 发过去没有应答或者丢失:进行重传
  • 来晚的应答不做处理

2.5. 可靠通信

  • 自动重传请求(Automatic Repeat reQuest,ARQ):这表示“重新发送请求”为自动发送并且接收方无需请求发送方重新发送错误段

  • 三个指针:发送并且得到确认的,发送还没有得到确认的,窗口尾部(可以发送的最多的字节)

一个实例:仔细看,最好手算,容易错

在这里插入图片描述

  • 为什么 201 在 401 后面发送?超时重传(要超过两倍的平均传输时间后才进行重传)

2.6. 4次挥手

在这里插入图片描述

  1. 客户发起(FIN),想要释放连接
  2. 服务器(ACK),同意断开,但是需要进一步传输刚才没传输完毕的数据
  3. 服务器(FIN,ACK),表示正式可以断开
  4. 客户确认受到B的同意断开(ACK)
  • 但是,最后一段客户要等待2MSL时间,防止没有断开

2.7. TCP中的计时器

  1. 重传计时器:多长时间进行重传
  2. 坚持计时器:避免死锁(WIN = 0 的时候修改 WIN 但是没有办法发送过去):收到 WIN = 0 的时候,开始进行计时,到时间主动询问
  3. 保持计时器:(坚持连接计时器)
    1. 发送数据段后,刷新
    2. 如果到达一定的时间,则再次询问是不是还要保持连接
  4. 时间等待计时器

3. UDP

3.1. UDP的概述

  1. UDP 用于:
    1. RIP:定期发送路由信息(periodically)
    2. DNS:避免延迟建立 TCP 连接(DNS 需要快速找到)
    3. SNMP:拥塞时(congestion),SNMP 必须仍然可运行。在没有拥塞和可靠性控制机制的情况下,UDP 在这种情况下的性能要优于 TCP。(主播和多播,大量信息传输)
    4. 其他协议包括 TFTPDHCP
  2. 必要时增加应用层的可靠性
  3. 流媒体就算有数据丢失也问题不大(对屏幕进行模糊化处理就行),但是发送速率是很重要的!(就算丢包了,也可以模糊处理)

3.2. UDP的报文格式(背下来,大题

在这里插入图片描述

  • 校验需要对首部和data一起进行校验(反直觉但是确实如此)

4. NAT / PAT

4.1. NAT

  • 就是网络地址转换,将内部地址转化为外部地址;(可以解决网络地址不够用)

  • 在 NAT 路由器将局部地址转换成网络上的地址(双向转换,有一个 NAT 表)

  • 可以分为静态PAT,动态NAT,PAT

    • 静态 NAT:固定的内部地址(internal address)到注册地址(registered address)的映射(一开始就写死)
    • 动态 NAT:映射以先到先得的方式动态进行(不是写死,配一个地址池,通过更新)
    • PAT(过载,Port address translation):端口地址转换用于允许许多内部用户共享一个“内部全局”地址(基于 Socket 映射,而不是 IP 地址,多个内网主机映射到一个公网地址)

4.2. NAT地址类型

  1. Inside Local address(内部本地地址):内网 IP 地址
  2. Inside Global address(内部全局地址): 注册 IP 地址, 对外部展示的内部地址
  3. Outside Global address(外部全局地址):由主机所有者分配的 IP 地址。通常是注册地址。(对内网而言的外部,是目的地址)
    其实就是目的地址

4.3. NAT优缺点

  1. 优点:由于并非每个内部主机都需要同时进行外部访问,因此您可以使用少量的全局唯一地址池来服务相对大量的私有寻址主机。
  2. 缺点:一一映射,并没有从根本上解决地址短缺的问题。

4.4. PAT

在这里插入图片描述

可以通过端口与内部地址进行映射


网站公告

今日签到

点亮在社区的每一天
去签到