您的位置:首页 > 理论基础 > 计算机网络

TCP协议三次握手四次挥手

2019-03-25 10:46 387 查看

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 。♪(・ω・)ノ

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: