计算机网络基础复习-传输层

本文详细介绍了网络通信中的端口作用,UDP和TCP协议的区别,包括UDP的无连接特性和TCP的可靠传输特性。还解析了TCP的三次握手建立连接和四次挥手释放连接的过程,揭示了网络通信中的关键概念和技术细节。

1. 端口

运输层使用 UDPTCP 协议,实现源端口目的端口的数据传输,为应用进程之间提供端到端的逻辑通信

发起通信请求,必须知道对方的服务器 IP端口号

常用服务的默认端口号
在这里插入图片描述

2. UDP 和 TCP

用户数据报协议 UDP(User Datagram Protocol)

  • 发送数据不需要建立连接
  • 尽最大努力交付,不保证一定交付
  • 对应用层传下来的报文添加首部后就交付给网络层
  • 没有拥塞控制,允许网络阻塞时丢失一些数据(比如看直播时画面卡一下)
  • 支持一对一、一对多、多对一、多对多
  • 首部占用小,只需要8个字节

传输控制协议 TCP(Transmission Control Protocol)

  • 发送数据前必须先建立TCP连接,传输完成后释放TCP连接
  • 每条TCP连接都是点对点,端点叫做套接字(socket,即 IP地址 :端口号
  • 同一IP可以有多个不同的TCP连接,同一端口号可以用在多个不同的TCP连接中
  • 连接的两端既发送报文,也接收报文,并设有缓存来存储将发送和已收到的数据
  • 提供可靠服务,数据不会出错、丢失,并按顺序到达
  • 把应用层传下来的数据看作无结构的字节流发送,接收方应用层再还原字节流
  • 首部最少占用20个字节,最大60字节

在这里插入图片描述

3. 首部格式

UDP 首部
在这里插入图片描述

  • 源端口:需要对方回信时选用,不需要时全0
  • 目的端口:终点交付报文,必须使用,若目的端口不存在则丢弃
  • 长度:记录UDP数据报长度,最短为8字节,即仅有首部,无数据部分
  • 检验和:利用伪首部检测UDP数据报传输中是否出错,有错则丢弃

TCP 首部

在这里插入图片描述

  • 源端口、目的端口:与UDP一样,各占2字节
  • 序号:TCP字节流每个字节都按顺序编号,序号记录本段报文第一个字节的编号
  • 确认号:期望收到对方下一个报文所应该的序号值
  • 数据偏移:记录TCP首部长度,其字段值以 4个字节 为单位
  • 保留:保留为今后使用,后面跟6个控制位
  • 窗口值:告诉对方,从确认号开始允许发送的最大数据量,以1字节为单位
  • 检验和:和UDP一样,加伪首部计算检验和
  • 紧急指针:指出本段报文紧急数据的字节数
  • 选项:一些可选的附加数据,最长40字节

4. TCP三次握手

  • SYN:SYN=1表示该报文是一个连接请求,且不能携带数据
  • ACK:当ACK=1时确认号才有效,建立连接后传送的报文必须都把ACK置为1

在这里插入图片描述

  1. 服务端B开启后,处于Listen监听状态,等待客户端的连接请求
  2. 客户端A发起请求,SYN置为1,选择一个起始序号seq,假设为x,由于不携带数据,因此只占用这一个序号
  3. 服务端B收到请求,发送确认给A,将ACK置为1,表示确认号ack生效,由于收到的报文没有数据,所以确认号 ack = x + 1,同时B也选一个初始序号seq,假设为y
  4. 客户端A收到B发送来的确认,A再发送一个确认给B,确认号为 ack = y + 1,序号为 seq = x + 1
  5. B收到A的确认,连接建立

5. TCP四次挥手

  • FIN:连接终止,当FIN=1表示请求释放连接
    在这里插入图片描述
  1. A发送请求关闭连接,FIN置为1,进入第一关闭等待状态
  2. B收到关闭请求,发送确认给A,并通知上层应用进程,不再接收来自A的数据
  3. A收到B的确认后,进入第二关闭等待状态,不再给B发送数据
  4. B发完给A最后的数据后,B也发送关闭连接请求,FIN置为1
  5. A收到B的关闭请求,最后给B再发送一次确认,然后进入时间等待状态
  6. B收到A最终确认,完全关闭连接
  7. A在时间等待状态内保证了最后一个确认能到达B,假如最后的确认丢失,B会再次发送FIN为1的请求,A再次发送最终确认,继续进入时间等待状态
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值