TCP协议的三次握手与四次挥手

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP协议的三次握手与四次挥手相关的知识,希望对你有一定的参考价值。

TCP协议的三次握手与四次挥手

1.什么是TCP协议

2.TCP协议与UDP协议的关系

3.TCP协议的三次握手与四次挥手

1.什么是TCP协议

TCP协议是作用在传输层的传输控制协议

  • TCP 提供一种面向连接的、可靠的字节流服务
  • 在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP
  • TCP 使用校验和,确认和重传机制来保证可靠传输
  • TCP 给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复
  • TCP 使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制

注意:TCP 并不能保证数据一定会被对方接收到,因为这是不可能的。TCP 能够做到的是,如果有可能,就把数据递送到接收方,否则就(通过放弃重传并且中断连接这一手段)通知用户。因此准确说 TCP 也不是 100% 可靠的协议,它所能提供的是数据的可靠递送或故障的可靠通知。

2.TCP协议与UDP协议的关系

TCP与UDP都是作用在传输层的两种协议

  • UDP 缺乏可靠性。UDP 本身不提供确认,序列号,超时重传等机制。UDP 数据报可能在网络中被复制,被重新排序。即 UDP 不保证数据报会到达其最终目的地,也不保证各个数据报的先后顺序,也不保证每个数据报只到达一次

  • UDP 数据报是有长度的。每个 UDP 数据报都有长度,如果一个数据报正确地到达目的地,那么该数据报的长度将随数据一起传递给接收方。而 TCP 是一个字节流协议,没有任何(协议上的)记录边界。

  • UDP 是无连接的。UDP 客户和服务器之前不必存在长期的关系。UDP 发送数据报之前也不需要经过握手创建连接的过程。

  • UDP 支持多播和广播。

    总结:

    TCP:面向连接,全双工,半关闭,错误检查,确认机制,数据恢复重传,流量控制,拥塞控制,有序传输,可靠性低效率。例如:E-mail,File sharing,Downloading,传输文件

    UDP:用户数据包协议,非面向连接,无序传输,不可靠高效率 例如:voice streaming,viedo streaming ,看直播看视频

? 小知识点:在局域网网络稳定的情况下采用UDP协议可以同时满足可靠性和高速度

? 在互联网上进程数据传输为了保证数据的完整性还是采用TCP比较合适

小知识点: sync半连接和accept全连接队列
ss -lnt
可以通过下面两个文件查看最大连接数
/proc/sys/net/ipv4/tcp_max_syn_backlog 未完成连接队列大小,建议调整大小为1024以上
/proc/sys/net/core/somaxconn 完成连接队列大小,建议调整大小为1024以上

3.TCP协议的三次握手与四次挥手

1.三次握手

技术分享图片

1.客户端发送SYN=1,seq=x请求
2.服务器发送SYN=1,ACK=1,seq=y,ack=x+1 确认收到
3.客户端发送ACK=1,seq=x+1,ack=y+1 同步收到
建立连接

SYN=1请求同步, seq=x 发送的包的序号x
ACK=1确认请求 ,seq=y 发送的包的序号y ack=x=1 希望收到下一个包
ACK=1确认请求 ,seq=x+1 发送的包的序号是x+1,ack=y+1 希望收到下一个包
连接建立

2.四次挥手

技术分享图片
四次挥手
1.客户端发送FIN=1, seq=u
2.服务端发送ACK=1,seq=v ,ack =u+1
3.服务端发送FIN=1, ACK=1 ,seq=w,ack=u+1
4.客户端发送ACK=1,seq=u+1,ack=w+1

FIN=1发送结束请求, seq=u 发送一个u的包
ACK=1确认请求 , seq=v 发送一个v的包, ack =u+1表示u这个包收到了
FIN=1发送结束请求, ACK=1 确认结束请求 , seq=w发送一个w的包 , ack=u+1表示收到了u这个包
ACK=1确认结束请求,seq=u+1 发送一个u+1的包 ,ack=w+1表示收到了w这个包
断开连接

Hope that this helps 。?(?ω?)?

以上是关于TCP协议的三次握手与四次挥手的主要内容,如果未能解决你的问题,请参考以下文章

TCP协议的三次握手与四次挥手

TCP的三次握手与四次挥手

TCP三次握手与四次挥手

三次握手与四次挥手

TCP三次握手与四次挥手

网络编程:TCP/IP协议的三次握手与四次挥手