HCIE学习记录——数据封装与常用协议(TCP/UDP)

数据封装与常用协议

  • 前言
  • 一、数据封装过程
  • 二、传输层协议——TCP、UDP
    • 1.TCP协议
      • 报文格式
      • TCP的连接——三次握手
      • TCP的关闭——四次挥手
    • 2.UDP协议
      • 报文格式


前言

本文主要介绍数据封装过程与常用的协议。

一、数据封装过程

HCIE学习记录——数据封装与常用协议(TCP/UDP)_第1张图片

二、传输层协议——TCP、UDP

1.TCP协议

一种面向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。

报文格式

HCIE学习记录——数据封装与常用协议(TCP/UDP)_第2张图片
Seq number:序号,表示传输第几个数据段
Ack number:确认号,收到多少数据段
SYN:同步请求,建立连接
ACK:代表收到对方数据段的状态。
FIN:结束,断开连接。

TCP的连接——三次握手

任何基于TCP的应用,电脑需要与服务器进行连接,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
1.请求端PC——>服务器端。SYN置位,请求建立连接。Seq number为产生的随机序号a,Ack number为0(尚未进行连接)。
2.服务器端——>请求端PC。SYN置位,请求建立连接;ACK置位,确认收到请求。Seq number为产生的随即序号b,Ack number为a+1(对方序号+1)。
3.请求端PC——>服务器端。ACK置位,确认收到请求。Seq number为a+1(本地序号+1),Ack number为b+1(对方序号+1)。
TCP连接建立。

第三次传输有什么作用?
答:当网络质量差时,前面的数据段可能会延迟回复,如果没有第三次传输确认,会导致服务器端连接一直打开,造成资源浪费。

TCP的关闭——四次挥手

当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
1.请求端PC——>服务器端。FIN置位,ACK置位。Seq number为a+1(本地序号+1),Ack number为b+1(对方序号+1)。
2.服务器端——>请求端PC。ACK置位。Seq number为b+1,Ack number为a+2(对方序号+1)。
3.服务器端——>请求端PC。FIN置位,ACK置位。Seq number为b+1,Ack number为a+2(对方序号+1)。
4.请求端PC——>服务器端。ACK置位。Seq number为a+2,Ack number为b+2。
TCP连接断开。

为什么服务器端要分两次传输置位信息呢?
答:第一次传输是确认收到断开连接请求,但是不确定自身是否也要断开连接(保证自身数据段的完整性)。第二次传输则是确认自身也要断开连接。

2.UDP协议

一种简单的无连接的传输层协议,由IETF的RFC 768定义。

报文格式

HCIE学习记录——数据封装与常用协议(TCP/UDP)_第3张图片

你可能感兴趣的:(tcp/ip,udp,网络)