计算机网络——传输层

本文详细介绍了计算机网络的传输层协议,重点讲解了TCP(传输控制协议)和UDP(用户数据报协议)的工作原理。TCP提供可靠的传输,包括连接建立的三次握手和连接释放的四次挥手,以及流量控制功能。UDP则是无连接的,适用于对实时性要求高的场景。此外,还提到了不同服务与应用层协议之间的关系以及端口的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传输层协议

传输层有两个协议,TCP(传输控制协议)和UDP(用户数据报协议)。为应用进程提供了逻辑通信。

TCP协议

需要将传输的文件分段,需要服务器和客户端建立会话(面向连接),实现可靠传输,有流量控制功能,全双工通信。每一条TCP连接只能是点对点的。
例如QQ传文件,发送邮件用的就是TCP协议。
传输层与应用层协议之间的关系:
http = TCP + 80端口
https = TCP+ 443端口
RDP = TCP + 3389端口 远程桌面服务
ftp = TCP + 21
共享文件夹 = TCP + 445
SMTP = TCP + 25 发邮件
POP3 = TCP +110 收邮件
telnet = TCP + 23
SQL = TCP + 1433
服务和应用层协议之间的关系
计算机启动了服务,该服务就开始侦听对应端口的数据,如WEB服务开启后,就是开始侦听TCP 的80端口,收到客户端的目的端口号为80的数据包时就可以侦听到。

  • 服务使用 TCP 或者UDP的端口侦听客户端请求
  • 客户端使用IP地址定位服务器,使用目标端口定位服务。
  • 可以在服务器的网卡上设置只开放必要端口,实现网络安全。
TCP连接

套接字(socket):IP地址+端口
三次握手四次挥手:
三次握手
TCP建立连接称为握手,客户端主动发送连接请求,服务器被动接受。

  • 开始时,客户端与服务器都处于关闭状态。
  • 首先 服务器的 TCP 服务器进程先创建传输控制块TCB,准备接受客户进程连接请求,然后服务器进程处于 LISTEN(监听)状态,等待客户的连接请求。
  • 然后 客户端 的 TCP 服务器进程创建传输控制块TCB,A 向 B 发送连接请求报文段,同步位 SYN=1,确认位ACK=0,选择一个初始的序号 seq=x。
  • B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 ack=x+1,同时也选择一个初始的序号 seq=y。此时 B 进入 SYN-RCVD(同步收到)状态。
  • TCP 客户进程 A 收到 B 的连接确认报文后,还要向 B 发出确认,确认报文段的 ACK=1,确认号为 ack=y+1,序号为 x+1。这时,TCP 连接建立,A 进入ESTABLISHED(连接)状态。
  • B 收到 A 的确认后,连接建立,B 也进入 ESTABLISHED 状态。
    第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
TCP的连接释放

在TCP连接建立成功后就可以开始数据通信,数据通信完成后,要进行TCP连接释放。称为挥手。
四次挥手

  • A 的应用进程向其 TCP 发送连接释放报文,并停止发送数据,终止控制位 FIN=1,其序号 seq=u 等于前面以传送数据的最后一个字节的序号加1。A 进入 FIN-WAIT-FIN-WAIT-1(终止等待1)状态,等待 B 的确认。
  • B 收到连接释放报文之后发出确认,确认号是 ack=u+1。此时 TCP 属于半关闭(half-close)状态,B 能向 A 发送数据但是 A 不能向 B 发送数据。A 收到 B的确认后,就进入 TIME-WAIT-2(终止等待2)状态,等待 B 发出的释放连接报文。
  • 当 B 不再需要连接时,发送连接释放报文,FIN=1。此时 B 进入 LASTLAST-ACK(最后确认)状态,等待 A 的确认。
  • A 收到来自 B 发出的连接释放报文后对此作出确认,确认报文段中 ACK=1,确认号 ack=w+1,而自己的序号 seq=u+1。然后进入 TIME-WAIT(时间等待)状态,等待 时间等待计时器设置的时间 2MSL(最大报文存活时间)后释放连接。
  • B 收到 A 的确认后释放连接。
    客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。
    最后要等待2MSL时间是防止客户端接收到服务器的连接释放报文后,发送给服务器的确认报文在网络上丢失,导致服务器无法关闭。因此要等待2MSL,让服务器重新发送连接释放报文,客户端重新发送确认报文。

TCP首部

在这里插入图片描述

  • 序号:记录的是分段后的数据段的第一个字节是整个文件的第几个字节。 确认号:告诉发送方下一个发送的文件序号。
  • 数据偏移:表示第几个字节是数据,4位二进制,最多表示首部有60个字节。
  • 确认ACK(ACKnowledgment):仅当 ACK=1时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1.
  • 同步SYN(SYNcronization):在连接建立时用来同步序号。当 SYN=1,ACK=0时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。

TCP流量控制

接受端通过控制接受窗口大小(rwnd)控制流量。

UDP协议

不需要文件分段,不需要建立会话(面向无连接),没有流量控制功能,没有拥塞控制,很适合多媒体通信,是不可靠传输。
例如域名解析,QQ聊天用的就是UDP协议。数据包广播或者多播,也是UDP协议。
首部开销只有8个字节;
DNS = UDP + 53

UDP首部格式
伪首部:只是为了计算检验和。
长度:指的是UDP首部8个字节+UDP数据部分。

端口

端口取值范围:0~65535
熟知端口:0~1023
登记端口:1024~49151
客户端端口:49152~65535

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值