关于tcp的知识记录
1. 概念
TCP(Transmission Control Protocol,传输控制协议),是一种面向连接的,可靠地,基于字节流的传输层通信协议。当应用层向TCP层发送用于网络间传输的用8位字节表示的数据流时,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制
2. 特性
有序性:为每个数据包编排序号,是接收端能够判断先后到达的次序混乱的数据包的原本顺序
正确性:TCP用一个checksum函数来检验数据是否有错误,在发送和接收时都要计算校验和,这使得接收端能够判断数据是否在传输过程中被破坏
可靠性:发送端采用超时重传并有确认机制识别错误或丢失数据,进行重发
可控性:接收端和发送端的网络质量通常不同,TCP采用滑动窗口协议和拥塞控制算法是数据的发送速度达到合理值
3. 三次握手
建立连接时,客户端发送SYN包到服务器,并进入SYN_SENT状态,等待服务器确认
服务器收到SYN包,反馈给客户端一个SYN+ACK包,此时服务器进入SYN_RECV状态
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,客户单和服务器同时进入ESTABLISHED(TCP连接成功)状态,完成三次握手
4. 四次关闭连接
关闭请求方向另一方发送一个带有FIN附加标记的报文段
接收方 收到这个FIN报文段之后,并不立即用FIN报文段回复,而是先向发送方 发送一个确认序号ACK,通知通知自己的相应的应用程序:对方要求关闭连接,使应用程序做相应的清理工作
接收方的应用程序清理工作完成后,向 发送方发送一个FIN报文段
发送方 收到这个FIN报文段之后,向接收方发送一个ACK,表示连接彻底释放
最新文章
- MFC MSBDutyTable下载地址
- 【BZOJ1036】[ZJOI2008]树的统计Count 树链剖分
- C#实现动态页面静态化
- android-数据存储之外部file存储(sdcard)
- PLSQL登录弹出空白框如何解决
- [C] static和extern的作用
- SqlServer知识点记录分享
- POJ 1321 棋盘问题 --- DFS
- 【JQuery基础教程(第三版)图灵】笔记
- tornado.web.Application类配置及使用
- Docker简单介绍
- Leetcode题1
- CI框架剖析一
- 【HDOJ 1085】数学问题,母函数
- 如何卸载CentOS自带的apache
- Synchronize,Lock, ReentrantLock,ReentrantReadWriteLock
- Python3.4 枚举类型的使用
- maven向本地仓库导入jar包
- Nginx负载均衡实例
- 在VMware上安装Ubuntu软件步骤与遇到的相关问题及解决方案