TCP基本知识
[TOC]
1. 定义
Transmission Control Protocol
,即 传输控制协议。
属于 传输层通信协议,基于TCP
的应用层协议有HTTP
、SMTP
、FTP
、Telnet
和 POP3
2. 特点
- 面向连接、面向字节流、全双工通信、可靠
- 具体介绍如下:
3. 优缺点
- 优点:数据传输可靠
- 缺点:效率慢(因需建立连接、发送确认包等)
4. 应用场景(对应的应用层协议)
要求通信数据可靠时,即 数据要准确无误地传递给对方
如:传输文件:HTTP、HTTPS、FTP等协议;传输邮件:POP、SMTP等协议
- 万维网:
HTTP
协议 - 文件传输:
FTP
协议 - 电子邮件:
SMTP
协议 - 远程终端接入:
TELNET
协议
5. 报文段格式
- TCP虽面向字节流,但传送的数据单元 = 报文段
- 报文段 = 首部 + 数据 2部分
- TCP的全部功能体现在它首部中各字段的作用,故下面主要讲解TCP报文段的首部
- 首部前20个字符固定、后面有4n个字节是根据需而增加的选项
- 故 TCP首部最小长度 = 20字节
[图片上传失败...(image-e99c39-1560915047474)]
示意图
[图片上传失败...(image-e15436-1560915047474)]
示意图
6. 建立连接过程
- TCP建立连接需 三次握手
- 具体介绍如下
[图片上传失败...(image-b6e573-1560915047474)]
示意图
[图片上传失败...(image-4e7b4e-1560915047474)]
示意图
[图片上传失败...(image-f746b4-1560915047474)]
示意图
成功进行TCP的三次握手后,就建立起一条TCP连接,即可传送应用层数据
注
- 因
TCP
提供的是全双工通信,故通信双方的应用进程在任何时候都能发送数据- 三次握手期间,任何1次未收到对面的回复,则都会重发
<font color="#ff0000">特别说明:为什么TCP建立连接需三次握手?</font>
- 结论
防止服务器端因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终导致形成死锁、浪费资源 - 具体描述
[图片上传失败...(image-c63a06-1560915047474)]
7. 释放连接过程
- 在通信结束后,双方都可以释放连接,共需 四次挥手
- 具体如下
[图片上传失败...(image-1bf9e4-1560915047474)]
示意图
[图片上传失败...(image-1c1e4d-1560915047474)]
示意图
[图片上传失败...(image-78eaa4-1560915047474)]
示意图
<font color="#ff0000">特别说明:为什么TCP释放连接需四次挥手?</font>
- 结论
为了保证通信双方都能通知对方 需释放 & 断开连接
即释放连接后,都无法接收 / 发送消息给对方
- 具体描述
[图片上传失败...(image-10c686-1560915047474)]
无差错传递等其他知识 参考链接:TCP协议攻略
网友评论