TCP 建立连接为啥需要经过三次握手

简介: TCP 建立连接为啥需要经过三次握手

1、明白TCP的定义:

保证可靠性和流控制机制的数据, 包括 socket ,序列号 以及窗口大小

TCP 建立 需要三次握手 有效的避免了历史错误连接的建立,减少通信双方的不必要的资源消耗, 三次握手能够帮助通信双方获取初始化序列号,他们能够保证传输数据包的不重不丢,还能保证他们的传输顺序, 不会因为网络传输问题发生混乱,这里为啥不使用【两次握手】和【四次握手】的原因已经非常清楚了;

【两次握手】:无法 避免历史错误连接的初始化,浪费接受方的资源;

【四次握手】:TCP协议的设计可以让我们同时传递ACK 和 SYN 两个控制信息,减少通信次数,所以不需要使用更多的通信次数传输相同的信息;


合并成下面


TCP 和UDP的区别

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP首部开销20字节;UDP的首部开销小,只有8个字节

6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

目录
相关文章
|
2月前
|
运维 网络协议
深入解析TCP三次握手与四次挥手:建立与断开连接的关键过程
深入解析TCP三次握手与四次挥手:建立与断开连接的关键过程
189 0
|
3月前
|
网络协议 网络性能优化 开发者
深入理解TCP连接的建立过程
【8月更文挑战第24天】
197 0
|
3月前
|
网络协议 算法 Linux
|
6月前
|
网络协议
TCP协议中用于建立和终止连接的过程(三次握手,四次挥手)
TCP协议中用于建立和终止连接的过程(三次握手,四次挥手)
38 0
|
6月前
|
网络协议 Linux 存储
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)
一、相关实际问题 1. 为什么服务端程序都需要先listen一下 2. 半连接队列和全连接队列长度如何确定 3. “Cannot assign requested address”这个报错是怎么回事 4. 一个客户端端口可以同时用在两条连接上吗 5. 服务端半/全连接队列满了会怎么样 6. 新连接的soket内核对象是什么时候建立的 7. 建立一条TCP连接需要消耗多长时间 8. 服务器负载很正常,但是CPU被打到底了时怎么回事
|
网络协议
建立TCP的连接的三次握手
刚才咱们一起学了四次挥手,这来看看三次握手!
68 1
|
网络协议 Linux
Linux网络编程TCP连接的建立和终止
Linux网络编程TCP连接的建立和终止
53 0
|
缓存 网络协议 NoSQL
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-3
五、异常TCP建立情况 1)connect系统调用耗时失控 客户端在发起connect系统调用的的时候,主要工作就是端口选择。在选择的过程中有一个大循环
|
存储 缓存 网络协议
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-2
三、深入理解connect 客户端再发起连接的时候,创建一个socket,如何瞄准服务端调用connect就可以了,代码可以简单到只有两句。
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-2
|
存储 网络协议 Linux
深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-1
一、相关实际问题 为什么服务端程序都需要先listen一下 半连接队列和全连接队列长度如何确定 “Cannot assign requested address”这个报错是怎么回事