| |
|
开发:
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协议有什么特点?TCP协议是有序的、面向连接的、可靠的字节流传输层协议。 什么是有序?数据在分组的时候,每一个分组数据会有编序列号,正是因为有序列号,当分组数据合成在一起的时候才能完整的拼在一起。 什么是面向连接?使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写,TCP连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放资源。 可靠传输通过什么来保证?1、三次握手建立连接 三次握手发生在什么时候?三次握手发生在客户端执行connect()的时候,该步返回成功,则说明三次握手已经建立。 为什么是三次握手两次不可以是两次?不可以。举个反例:假设可以是两次握手,客户端在发送一个连接请求报文段之后,此报文段并没有直接到达服务器端,而是在某个网络节点长时间的逗留了,系统会认为它已经失效,此时客户端重新发送请求,当新的请求、连接释放之后,第一次发送的请求又到达了服务器端,此时服务器端会认为是客户端又发起了新的连接请求,会给客户端发送确认报文段,而客户端其实并没有发送这个请求,而是前面滞留的,所以客户端对服务器发送过来的确认报文段不予理睬,也不会发送数据,而服务器端却认为连接已经建立成功,并等待客户端发送过来的数据。这样一来,服务器端的很多资源就会白白浪费。 三次握手时会出现什么攻击?比较典型的是syn泛洪攻击,或叫syn溢出攻击。 四次挥手的过程可以用三次完成吗?可以。一般在cli端发送请求报文段之后,ser端可以同时发送出SYN+ACK报文,其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,ser端在接收到cli端的请求关闭连接的报文之后,可能不会立即关闭,而是要等到ser端的报文全部发送完成之后才会发送Fin报文,此时只会发送一个ACK报文,因此需要四步挥手。但是,如果在本端关闭连接的同时,恰好又收到了对方的Fin报文,此时就可以把本端的Fin和确认ACK合在一起发送给对方,就可以实现三次挥手。 四次挥手时,会受到什么样的攻击?详解:https://blog.csdn.net/plokmju88/article/details/103918001. “滑动窗口机制”工作原理当网络不好导致数据丢失时数据每丢失一次,分组字节数减为以前的二分之一。 当网络恢复时如果目前分组大小<最初大小的二分之一,每成功发送一个字节,字节数增加1倍。 什么是应答确认?当发送端将数据发出之后会等待对短的确认应答。如果有确认应答,说明数据已经成功到达对端,反之,则数据丢失的可能性很大。TCP将每个字节的数据都进行了编号,即为序列号。每一个序列号都带有对应的确认序列号,意思是告诉发送者,我已经受到了哪些数据,下次你从哪里发。 什么是超时重传?重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重发。 字节流是什么?流可以看做是一个输出管道,字节流的意思就是说,将由多个字节组成的数据放入到这个管道之中,而且数据分组发送时,分组数据的大小可以以字节为单位进行调整。 为什么要调整分组数据的字节数?该怎样调整?1、我们前面说过,分组数据的大小是根据网络的好坏来调整的,那么当网络不好时,如果还一昧的发送字节数很大分组数据,就很容易出错。(这就好比道路状况本来就差,却还大量的涌入车辆,就很容易出现交通事故,所以当交通道路状况很差时,就应该及时减少车辆的流入,当路况好时,再增加汽车流量。) 什么是TCP粘包?TCP粘包就是指发送方发送的若干数据到达接收方是粘在了一起,从接受缓冲区来看,后一数据的头紧接着前一数据的尾。 参考:https://blog.csdn.net/qq_43648751/article/details/105924221. |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 1:43:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |