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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 传输层协议(TCP3次握手) -> 正文阅读

[网络协议]传输层协议(TCP3次握手)

传输层协议

TCP/IP协议栈

TCP/IP介绍

TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。

TCP/IP 通信过程

在这里插入图片描述

TCP特点及特性

**特点:**稳定、可重传、传输慢
在这里插入图片描述
特性:

  1. 工作在传输层
  2. 面向连接协议
  3. 全双工协议
  4. 半关闭
  5. 错误检查
  6. 将数据打包成段,排序
  7. 确认机制
  8. 数据恢复,重传
  9. 流量控制,滑动窗口

TCP端口

在这里插入图片描述

系统当中每打开一个进程会分配pid(系统中的编号,方便管理),其次会分配一个端口号

**端口号作用:**确定进程
在这里插入图片描述

  • 源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。(源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即 65536 (0-65535))

  • 序列号:表示本报文段所发送数据的第一字节的编号。(在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0 开始 无限循环)

  • 确认号:(ack表示接收方期望收到发送方下一个报文段的第一个字节数据编号。(也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号:传输是否有问题?)

  • 数据偏移/首部长度:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。

  • 控制位

    URG(紧急位):本报文段中发送的数据是否包含紧急数据。(注:后面的紧急指针字段只有当URG=1时才有效 )
    ACK(确认位)前面确认号字段是否有效。(注:只有当ACK=1时,前面的确认号字段才有效。A和B已经建立连接状态 ACK=1)
    PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据。(为接收后续数据腾出空间,如果为1,则表示对方应当立即把数据提交上层应用,否则将会一直停留在TCP缓冲区中)
    RST(重置位):若RST=1,则与主机的连接出现了严重错误(需释放连接,再重连),或说明上次发送给主机的数据有问题(主机拒绝回应,带RST标志的TCP报文段为复位报文段)
    SYN(同步位)在建立连接时使用,用来同步序号。(A想和B请求建立连接状态 SYN=1 同步位)
    FI N (断开位)通知对方本端要关闭连接了,标记数据是否发送完毕(A和B已经断开连接 FIN=1)

  • 窗口大小:表示现在允许对方发送的数据量。(也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据)

  • 校验和:提供额外的可靠性紧急指针:标记紧急数据在数据字段中的位置

  • 选项部分:其最大长度可根据TCP首部长度进行推算。(TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节)

TCP3次握手(重点)

在这里插入图片描述
注释:

  • Seq=x //序列号
  • SYN=1 //同步位,表示发送另一台计算机的TCP数据包,请求在它们之间建立连接。
  • ack=x+1 //确认号
  • ACK=1 //确认位,

当PC1想和PC2建立起连接,将连接信息写入报文
第一次握手
客户端给服务器发送一个SYN报文(在TCP标头中SYN=1的TCP/IP数据包),该段中包含客户端的初始序列号Seq=x。
第二次握手
服务器返回客户端SYN+ACK报文(在TCP标头中SYN=1,ACK=1的TCP/IP数据包),该段包含服务器的初始序列号Seq=y,同时用ack=x+1来表示已收到客户端的SYN段(ACK数据包是任何确认收到一条消息或一系列数据包的TCP数据包)

第三次握手
客户端给服务器响应一个ACK报文(在TCP标头中ACK=1的TCP/IP数据包)该网段中ack=y+1来表示已收到服务器的SYN段,Seq=x+1

在这里插入图片描述

四次挥手

在这里插入图片描述

TCP超时重传

超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个 计时器 ,在一定时间内如果没有得到发送的数据报的ACK 报文 ,那么就重新发送数据,直到发送成功为止。 TCP 可靠性中最重要的一个机制是处理数据超时和重传。

UDP协议

UDP特性

  • 工作在传输层
  • 提供不可靠的网络访问
  • 非面向连接协议
  • 有限的错误检查
  • 传输性能高
  • 无数据恢复特性
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 19:17:07  更:2022-07-20 19:17:35 
 
开发: 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年5日历 -2024/5/19 12:21:04-

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