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的三次握手

(一)传输控制协议TCP:

  • 面向连接的,可靠的,基于字节流的传输层通信协议
  • 将应用层的数据流分割为报文段并发送给目标节点的TCP层
  • 数据包都有序号,对方收到则发送ACK确认,未收到则重传
  • 使用校验和来检验数据传输过程是否有误

IP协议:是TCP/IP体系中的网络层协议,根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务

(二)TCP报文头:

下图为TCP报文头的图解:
在这里插入图片描述

  • **source port ,Destination port:**分别表示源端口目的端口,它们各占用两个字节,TCP和UDP均不包含IP,因为IP属于网络层,但它们均包含端口,因为其属于传输层。

线程通信可以通过:管道,内存共享,消息队列,信号量
前提是两个进程可以以标识唯一进程,通过此进程找到对应进程,在本地进程中可使用PID唯一标识进程
如果在不同主机,则要在协议使用不同的端口号
IP可以唯一标识主机,TCP和端口号可以唯一标识唯一线程,因此,TCP/IP便可以标识主机中的唯一进程,也成为套接字,即Sockt

  • **sequence number:**占用四个字节,TCP中传输的每个字节均按字节编号
  • **ACK number:**期望收到对方下一个报文的第一个字节序号
  • **offset:**数据偏移,指出TCP报文的数据距离TCP报文起始处有多远
  • **Reserved:**保留域
  • TCP Flags:
  • 1.URG:紧急指针标志,为1时标识紧急标志有效
  • 2.ACK:确认序号标志,为1时标识确认号有效,为0时标识不含确认信息,忽略确认号字段
  • 3.PSH:为1表示有push号,接收方接受到报文段后,尽快将报文段交给应用程序,而不再缓冲区排队
  • 4.RST:重置连接标志
  • 5.SYN:同步序号:用于建立来连接过程,SYN=0,ACK=0表示该数据段为使用捎带的确认域
  • 6.FIN:finish标志,用于释放来连接,为1时表已关闭本方数据流
    **windows:**告知发送端,接收端的缓存大小,控制发送端发送的速率,达到流量控制
    checksum检验和,对于整个TCP报文段,TCP头部,TCP数据以16位进行计算所得,由发送端计算存储,由接受端进行验证
    urgent pointer紧急指针

(三)TCP握手

当一个应用程序希望与另一个程序建立通信,它会发送一个通信请求,这个请求要被发送到一个确切的地址,在 双方握手之后,TCP将在两个应用之间建立全双工的通信,这个全双工通信将占用两个应用的通信,直到一方或双方关闭

握手是未来建立连接:
在这里插入图片描述

  • 服务器先创建一个传输块PCB,进入Listener监听状态,之后客户端也会创建以一个传输块PCB,进入监听状态,之后客户端向服务器发出请求报文SYN,seq,SYN为同步序号,初始序号seq,发送后客户端进入SYN_SENT的状态,发送后的数据包为SYN报文段,消耗一个序号,为第一次握手。
  • 然后服务器端发出确认报文SYN=1,ACK=1,seq=y,ack=x+1,服务器进入SYN_RCVD状态。
  • 第三次客户端接受到后变为ESTAB_LISHED状态发送ACK=1,seq=x+1.ack=y+1;服务器也进入ESTABLISHED状态

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
1.第一次握手:建立连接时,客户端发送SYN包(syn=j)服务器,进入SYN_SEND状态,等待服务器确认
2第二次握手:服务器接收到SYN包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态
3第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器端进入ESTABLISHED状态,完成第三次握手

(四)三次握手的原因:

为了初始化Sequence number的初始值

首次握手的隐患:SYN超时
原因:

  • 服务器收到客户端的SYN,恢复SYN-ACK时ACK未确认
  • 服务器端不断重试直至超时,Linux默认等待63秒后断开

针对SYN Flood的防护措施:

  • SYN 队列满后,通过tcp_syncookiese参数返回SYN Cookies
  • 若为正常连接则客户端会发SYN Cookies,直到建立连接

若建立连接,客户端出现故障:
保活机制:向对方发送保活探测报文,若为收到响应则继续发送,当尝试次数达到保活探测数仍无相应则中断连接

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:25:55  更:2022-04-06 16:27:26 
 
开发: 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 4:19:27-

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