何为TCP
- 英语:Transmission Control Protocol,缩写为TCP
- TCP是传输控制协议;是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义
- 与UDP一样完成第四层传输层所指定的功能与职责
TCP机制
- 三次握手、四次挥手
- 具有校验机制、可靠、数据传输稳定
TCP链接、传输流程
![](https://img.haomeiwen.com/i5625017/7750ec685cccd098.jpeg)
实际发送的数据 要大于 发送的目标数据 因为客户端和服务器端会有信息的校验数据添加进来
TCP 能做什么
- 聊天消息传输、推送
- 单人语音、视频聊天
- 几乎UDP能做的都能做,但需要考虑复杂性、性能问题
- 限制:无法进行广播,多播等操作
TCP 核心API 讲解
- socket():创建一个socket
- bind():绑定一个socket到一个本地地址和端口上
- connect():连接到远程套接字
- accept():接受一个新的连接
- write():把数据写入到socket输出流
- read():从Socket 输入流读取数据
服务器端的连接
![](https://img.haomeiwen.com/i5625017/59c714211a4a73e8.jpeg)
扩展——Socket 与 进程关系
![](https://img.haomeiwen.com/i5625017/49fe1c5f44bd2da5.jpeg)
可以实现 不同进程之间的通信
TCP连接可靠性 - 三次握手
![](https://img.haomeiwen.com/i5625017/767f6ef92b2f0c9b.png)
SYN 命令 带一个随机值 发送给服务端,然后回送命令 SYN 以及 ACK 命令,会携带客户端的x 以及一个随机数y,客户端回送一个ACK命令,携带服务器的y+1,以及x+1 回送过去
三次握手的必要性
![](https://img.haomeiwen.com/i5625017/b910fee7c9bd55f3.jpeg)
可以确保在多个客户端连接时候 确保一一对应 准确性
TCP连接可靠性 - 四次挥手
![](https://img.haomeiwen.com/i5625017/ffe516d037b4f019.jpeg)
在客户端停止发送信息之后,服务端会间隔发送FIN命令
一般30s 全双工 四次挥手,一次次端口、先端口客户端,然后是服务端
网友评论