TCP和UDP协议的区别?TCP协议为什么需要三次握手?
2023-06-13 09:11:19 时间
前言
TCP协议三次握手的过程
三次握手可以简化成两次握手吗?为什么?
TCP协议三次握手的过程
TCP协议提供的是可靠的有连接服务
三次?为什么是三次?三次分别做了什么事情?
三次是不是冗余的?两次行不行?
TCP协议与UDP协议有什么区别?
传输层介绍:传输层属于主机间不同进程的通信,传输层向上面的应用层提供通信服务,并屏蔽了下面的核心网络细节,使得面向传输层编程就像是两个主机进程之间有一条端到端的逻辑通信信道一样;当传输层采用TCP协议时,这条逻辑通信信道就是一条可靠的通信信道,而尽管下面的网络是不可靠的。
端口
网络层:提供主机之间的通信 传输层:提供主机不同进程之间的通信 应用层:提供不同应用之间的通信 实际上,应用层定义了进程交换的报文类型、报文的语法、字段的含义、进程如何发生数据、怎么样发送数据等等。
UDP协议
16位源端口号 16位目的端口号 16位UDP长度 16位UDP校验和
TCP协议
TCP协议-序号
- 4个字节[0, 4294967295]
- TCP数据是字节流————每个字节都有唯一的序号
- 起始序号在建立TCP连接的时候设置
- 序号表示本报文段数据的第一个字节的序号
TCP协议-确认号
- 和序号一致——四个字节
- 期待收到对方下一个报文的第一个数据字节序号
- 若确定号=N,则序号N-1为止的所有数据都已经正确收到
TCP协议-控制位
- 6个比特位
TCP协议-窗口
- 2字节————[0,65535]
- 窗口指明允许对方发送的数据量
- 数据缓冲空间有限,不能无限缓存数据
UDP vs TCP
- TCP提供的是可靠的有连接服务
- UDP提供的是不可靠的无连接服务
TCP连接
- 建立连接
- 通过连接进行通信
- 释放连接
- 可靠传输:无差错、不丢失、不重复
- 按序到达:数据有序
UDP连接
UDP协议只管发送,什么都不保证
- 网络层:提供主机之间的通信
- 传输层:提供主机不同进程之间的通信
1.TCP———“打电话” 2.UDP———“写信”
TCP连接过程
- 第一次:SYN=1请求同步并告诉对方自己的数据序列号
- 第二次:SYN=1、ACK=1,确认对方的数据并告诉对方自己的数据序列号
- 第三次:ACK=1,确认了对方的数据并开始传输数据
如果说第一次发送请求,主动段迟迟接受不到回应会第二次发送请求,这样最终可能造成双重连接,从资源的角度来看就是浪费了不必要的资源,从逻辑情况考虑就是异常情况,所以最后一次握手会丢弃其中一次连接,建立第三次正式连接。
相关文章
- 计算机网络之TCP/UDP协议详解[通俗易懂]
- 终于把TCP协议与UDP协议给整明白了[通俗易懂]
- CH579M以太网控制板--连接路由器或交换机-单台控制板作为TCP服务器和电脑端的TCP客户端通信
- wireshark捕获tcp数据包_抓包分析详解
- 32. 传输层TCP协议十大主要特性(2) —— 超时重传
- 36. 传输层TCP协议十大主要特性(7-8) —— 延迟应答 /捎带应答
- kubernetes Tcp流量可视化
- tcp和udp的区别和使用场景_TCP跟UDP有什么不同
- 当进程退出和机器宕机时TCP连接发生什么
- epoll使用实例:TCP服务端处理多个客户端请求
- python 数据库性能提升 - TCP聊天+传输文件服务器服务器套接字v2.7
- 有关TCP协议,这是我看过讲的最清楚的一篇文章了!
- Linux TCP流量限制实现(linuxtcp限制)
- Go语言TCP协议
- 端口揭示Linux系统监听TCP端口的真相(linux监听tcp)
- MySQL: TCP/IP Protocol for Database Management(mysqltcp)
- 超时Linux下设置TCP超时时间的方法(linux设置tcp)
- 极客漫画:TCP 兄弟
- TCP 滑动窗口 与窗口缩放因子(Window Scaling)
- Linux TCP 心跳:保持网络的连接性(linuxtcp心跳)
- 深入理解Linux下的TCP协议栈(linux tcp协议栈)
- Linux下TCP窗口优化的技巧(linux tcp 窗口)
- 探究Linux TCP协议实现的发包机制(linux tcp发包)
- C语言实现TCP连接MySQL的方法(c tcp连接mysql)
- TCP与Redis两种不同技术的比较(tcp和redis区别)
- ipv6实现tcp编程示例