传输层协议

本文深入解析TCP与UDP协议,包括TCP的三次握手和四次挥手过程,以及常用TCP端口号。TCP是面向连接、可靠的协议,提供全双工服务,而UDP则是无连接、不可靠的协议,适用于速度要求高的场景。TCP报文格式包含序号、确认号、窗口大小等关键字段,确保数据正确传输。UDP报文头则包括源端口、目的端口和校验和,其特点是无连接、不可靠和面向数据报。
摘要由CSDN通过智能技术生成

目录

TCO和UDP协议

TCP协议与UDP协议介绍

TCP报文格式

TCP三次握手

四次挥手

常用的TCP端口号

三次握手的三次状态

四次挥手的具体状态

UDP协议概述


TCO和UDP协议

TCP

传输控制协议

UDP

用户数据报协议

TCP协议与UDP协议介绍

TCP是面向连接的,可靠的进程到进程通信的协议

TCP提供全双工服务,及数据可在同一时间双向传输

TCP报文段:

       TCP将若干个字节构成分组,叫做报文段

       TCP报文段封装咋iIP数据报中

UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输数据速度更快,效率更高,无连接网络协议,是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包送到网络线路上,由系统自主选定路线进行传输。比如QQ发送信息。

TCP报文格式

序号:发送端为每个字节进行编号,便于接收端正确重组

确认号:用于确认发送端的信息

窗口大小:用于说明本地可接受数据段的数目,窗口大小是可变的。

首部长度:用它可以确定TCP首部的长度,可以扩展到60个字节。

保留

控制位:URG是紧急位,紧急指针有效位。

ACK:确认位,只有当ACK=1时,确认序列号字段才有效,当ACK=0时,确认号字段无效

PSH:急迫位,标志位位1时,要求接收方尽快将数据段发送到应用层。

SYN:同步位,同步序号位,TCP需要建立连接时,将这个值设为1.

FIN:断开位,当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1。

窗口大小:说明本地可接收数据段的数目。这个值的大小是可变的,当网络通畅时接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小实现的。

比如下载速度从一开始的几KB逐渐提升到几MB的过程。

校验和:用来做差错控制。字段检验的范围包括首部和数据这两部分。数据段在发送时和到达目的地时会进行校验和计算,若这两次的校验和一致,则说明数据基本是正确的,否则将认为该数据已被破坏,接收端各丢弃该数据。

选项:在TCP首部可以有多达40字节的可选信息。例如,最大报文段长度MSS (Maximum Segment Size) 。MSs告诉对方

TCP: "我的缓存所能接收的报文段的数据字段的最大长度是MSs个字节。"

TCP三次握手

TCP建立连接的过程称为三次握手

  1. 发送SYN报文(Seq=x,SYN=1)
  2. 发送SYN+ ACK报文(Seq=y,Ack=x+1,SYN=1,ACK =1)
  3. 发送ACK报文(Seq=x+1,Ack=y+1,ACK=1)

四次挥手

第一次挥手:客户端打算断开连接,向服务器发送FIN报文(FIN标记位被设置为1,1表示为FIN,0表示不是),FIN报文中会指定一个序列号,之后客户端进入FIN_WAIT_1状态。

也就是客户端发出连接释放报文段(FIN报文),指定序列号seq = u,主动关闭TCP连接,等待服务器的确认。

第二次挥手:服务器收到连接释放报文段(FIN报文)后,就向客户端发送ACK应答报文,以客户端的FIN报文的序列号 seq+1 作为ACK应答报文段的确认序列号ack = seq+1 = u + 1。

接着服务器进入CLOSE_WAIT(等待关闭)状态,此时的TCP处于半关闭状态(下面会说什么是半关闭状态),客户端到服务器的连接释放。客户端收到来自服务器的ACK应答报文段后,进入FIN_WAIT_2状态。

第三次挥手:服务器也打算断开连接,向客户端发送连接释放(FIN)报文段,之后服务器进入LASK_ACK(最后确认)状态,等待客户端的确认。

服务器的连接释放(FIN)报文段的FIN=1,ACK=1,序列号seq=m,确认序列号ack=u+1

第四次挥手:客户机接受打服务器发来的FIN请求断开的报文后,发送一个ACK的确认报文,证明双方之间完成连接的断开,作为ACK报文其中seq=u+1,ack=w+1

常用的TCP端口号

  • 21:ftp–文件传输协议(FTP)端口
  • 22:ssh–安全 Shell(SSH)服务
  • 23:telnet–Telnet 服务
  • 25:smtp–简单邮件传输协议(SMTP)
  • 37:time–时间协议
  • 53:dns–域名服务
  • 69:tftp–小文件传输协议
  • 80:http–超文本传输协议
  • 109:pop2–邮局协议版本2
  • 110:pop3–邮局协议版本3
  • 161:snmp–简单网络管理协议
  • 179:bgp–边界网络协议
  • 213:ipx–互联网络分组交换协议
  • 443:https–安全超文本传输协议
  • 1521:oracle数据库
  • 3306:mysql数据库
  • 5000:sql server数据库
  • 8000:QQ
  • 67:DHCP

三次握手的三次状态

SYN_SENT状态是:发送连接请求后等待相匹配的连接请求的状态

SYN_RECV:接受和发送一个请求报文后等待确认

ESTABLISHED:连接已经建立可以开始传输数据。

四次挥手的具体状态

UDP协议概述

源端口: 操作系统自动分配的

这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中。如果不写入端口号,则把这个字段设置为 0;这样,接收端的应用程序就不能发送响应了

目的端口: 服务器提前准备好的端口

接收端计算机上 UDP 软件使用的端口,占据 16 位

长度: 该字段占据 16 位(2字节),表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度

因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8

校验和: 该字段占据 16 位,可以检验数据在传输过程中是否被损坏

特点

1.无连接
2.不可靠
3.面向数据报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值