IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 只知道TCP的三次握手和四次挥手?TCP和UDP报头、TCP确认机制和滑动窗口了解一下 -> 正文阅读

[网络协议]只知道TCP的三次握手和四次挥手?TCP和UDP报头、TCP确认机制和滑动窗口了解一下

你真的了解TCP的工作原理吗?

如果你说你知道TCP的三次握手和四次挥手,那TCP和UDP报头你知道吗?TCP的确认机制和滑动窗口呢?

不知道也没关系,这些下面都会讲到的!

PS:文章最后有惊喜~

  • TCP和UDP报头

TCP报文头部:

Source Port:源端口,标识哪个应用程序发送。长度为16比特。

Destination Port:目的端口,标识哪个应用程序接收。长度为16比特。

以浏览网页的时候,客户端(网页浏览器)向服务器(网站)请求下载网页为例,

客户端向服务器发了一个请求报文,这个报文的源端口是客户端网页浏览器的端口,目标端口就是网站的web服务软件的端口。

Sequence Number:序号字段。TCP链接中的每个报文都有序列号。长度为32比特。

Acknowledgment Number:确认号,用于对收到的报文的确认 。

Header Length:头部长度,TCP报文头部长度,默认情况下,TCP头部为20字节。

Control bits:控制位,包含FIN、ACK、SYN等标志位,各个标志位的作用,后续会讲解。

Window:窗口TCP的流量控制,这个值表明当前接收端可接收的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比特。

Checksum:校验字段,由发端计算和存储,并由收端进行验证,用于校验数据传输中是否有损坏。

UDP报文头部:

Source Port:源端口,标识哪个应用程序发送。长度为16比特。

Destination Port:目的端口,标识哪个应用程序接收。长度为16比特。

Length:报文总长度。

  • TCP三次握手

    TCP连接建立的详细过程如下:

    由TCP连接发起方(图中PC1),发送第一个SYN位置1的TCP报文。初始序列号a为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为0 ;

    接收方(图中PC2)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1;

    PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确认序列号为b+1。PC2收到之后,TCP双向连接建立。

    • TCP确认机制

    假设PC1要给PC2发送一段数据,传输过程如下:

    1. PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为“a+1”,第二个字节的序号为“a+2”,依次类推。

    2. PC1会把每一段数据的第一个字节的编号作为序列号(Sequence ?number),然后将TCP报文发送出去。

    3. PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号(a+1+12)

    4. PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12” ,说明“a+1”到“a+12”这一段的数据已经被接受,需要从“a+1+12”开始发送。

    为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认。

    城域网(MAN):

    在一个城市范围内所建立的计算机通信网络。

    典型的城域网有:教育城域网、市级或省级电子政务专网宽带城域网等。

    广域网(WAN):

    通常覆盖很大的地理范围,从几十公里到几千公里。它能连接多个城市甚至国家,并能提供远距离通信,形成国际性的大型网络。

    典型的广域网有:Internet(因特网),各大型企事业单位的专网。

    • TCP滑动窗口

    星型网络:

    1. 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。

    2. 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。

    3. 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。

    4. 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。

    5. 发送方根据接收方当前的Window大小发送相应数量的数据。



    • TCP四次挥手

    TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。

    如图所示:

    1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;

    2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。

    3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。

    4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。?

    ? ? 如果你需要网工学习资料,可以私我哦~

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:58:44  更:2021-11-30 15:59:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:34:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码