参考:
关于TCP/IP https://www.jianshu.com/p/a3a1ff562468
关于TCP/IP主要协议 https://www.jianshu.com/p/dac7b8bdb682
一.TCP/IP模型
1.TCP/IP协议簇
- 网络协议是为计算机网络进行数据交换而建立的规则、标准或约定
- TCP/IP(Transmission Control Protocol/Internet Protocol)协议簇是Internet的核心协议,包含一系列构成互联网基础的网络协议
2.TCP/IP协议模型的分层
- TCP/IP模型将协议分为数据链路层、网络层、传输层和应用层
- TCP/IP协议栈各层协议
- TCP/IP协议栈数据封包
- TCP/IP协议栈发送/接收数据处理过程
通信过程对应数据的入栈和出栈过程,发送时入栈封装传输信息,接收时出栈拆除传输信息
二.TCP/IP协议簇各层主要协议
1.数据链路层
- 向网络层数据包添加报头和报尾,封装成帧
- 网络层和数据链路层都是基于目标地址将数据发送给接收端,网络层(路由表)相当于一次旅行的全部行程,行程内某区间的起始点和目的地点就是一个数据链路的源地址和目标地址
2.网络层:IP协议
- 提供不可靠、无连接的服务(即依赖其他协议进行差错控制)
- IP地址
1)分为IPV4和IPV6,各占8和32个字节
2)分为网络号和主机号,网络号区分不同网络点,主机号区分不同计算机
3)IPV4地址根据不同的内容开头分为4类
- 子网掩码:改变网络号和主机号的位数
- IP协议报头
1)TTL生存时间代表数据包可经过的最多路由器数
2)8位协议标识封装的传输层协议
3.网络层:ARP/RARP协议
- ARP(地址解析协议):广播IP地址获取MAC地址
1)主机发送IP包时,先检查自己的ARP缓存,看是否有对应IP-MAC地址值
2)若IP-MAC地址值不存在,则主机向网络发送ARP协议广播包
3)网络中对应IP的主机收到ARP广播后,将自己的MAC地址发送给发ARP广播的主机 - RARP(反向地址解析协议):广播MAC地址获得IP地址
1)发送主机发送RARP广播,声明自己的MAC地址并且请求RARP服务器分配一个IP地址
2)本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找是否有MAC-IP地址值
3)若有,RARP服务器发送此IP地址给源主机;若无,RARP服务器不做响应
4)源主机收到响应,就使用此IP地址;如果没有收到响应,则初始化失败
4.网络层:ICMP(网络控制报文)协议
- 当传送IP数据包发生错误(如主机不可达、路由不可达等),ICMP将错误信息封包并传回主机
5.传输层:TCP协议和UDP协议
- TCP和UDP都是传输层协议,由于特性不同,适用不同应用场景
特性 | TCP | UDP |
---|---|---|
可靠性 | 高 | 低 |
连接性 | 建立连接 | 无连接 |
报文 | 面向字节流(分割报文) | 面向报文(不分割报文) |
传输效率 | 低 | 高 |
传输速度 | 慢 | 快 |
双工 | 全双工 | 一/多 对 一/多 |
流量控制 | 有 | 无 |
拥塞控制 | 有 | 无 |
应用场景 | 高准确低效率 | 高效率低准确 |
- TCP和UDP协议的应用
传输层协议 | 应用层协议 | 应用 |
---|---|---|
TCP | HTTP | 万维网 |
FTP | 文件传输 | |
TELNET | 远程终端 | |
SMTP | 电子邮件 | |
UDP | DNS | 域名转换 |
TFTP | 文件传输 | |
NFS | 远程文件服务器 | |
SNMP | 网络管理 |
- TCP连接的建立:三次握手
1)客户端x发送一个SYN(SEQ=x)报文给服务器y,进入SYN_SEND状态
2)服务器收到SYN报文,回应一个SYN(SEQ=y)+ACK(ACK=x+1)报文给客户端,进入SYN_RECV状态
3)客户端收到服务器的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态
注意:如果仅进行两次握手,服务器将提前进入准备状态,此时如发生网络中断使服务器的SYN报文未能传回给客户端,客户端将误以为握手失败而没有发送信息,那么服务器将建立一个实际不存在的连接
- TCP连接的关闭:四次挥手
1)主机A向主机B发送FIN+ACK报文,并进入FIN_WAIT_1状态
2)B回复ACK报文,表示已同意A的关闭连接请求,但目前因正在处理事务暂时无法关闭连接,此时A进入FIN_WAIT_2状态
3)B处理事务完毕后,向A发送FIN+ACK报文请求关闭连接,B进入LAST_ACT状态
4)A发送ACK报文,进入TIME_WAIT状态,B收到后关闭连接,A在报文发送后的2MSL依然没收到B的消息,则证明B已经正常关闭,那么A也关闭连接
注意:TCP采用全双工模式通信,主机B在接到主机A关闭连接请求时,可能仍在向主机A发送数据,此时主机B需要在自己发送数据完毕后再次向主机A确认,故需要通过四次挥手关闭连接
- TCP流量控制
1)使用滑动窗口机制避免因发送方过快发送而使接收方来不及接收
2)下图接收方B进行三次流量控制,第一次rwnd=300,第二次rwnd=100,最后将rwnd=0(不允许再发送数据)
- TCP拥塞控制
0)拥塞窗口:发送方决定发送窗口大小的变量(cwnd),其大小取决于网络拥塞程度并动态变化
1)慢开始:发送方发送数据时逐渐增大(指数)拥塞窗口
2)拥塞避免:当拥塞窗口增大到慢开始门限(cwnd > ssthresh),减慢拥塞窗口增加速度(线性)
3)快重传:接收方每收到失序报文段后立即发出重复确认(而不是等到发送数据时才捎带确认)
4)快恢复:拥塞导致报文失序时,重传报文的拥塞窗口减半而非从头开始
6.应用层:HTTP协议
- 基于TCP协议,TCP负责报文的可靠传输,HTTP负责报文内容的识别
- 无状态协议,每次HTTP内容解析之间没有关联
- 包含客户端发送请求的请求报文和服务器响应请求的响应报文
7.应用层:DNS协议
- 实现域名解析(主机名到IP地址解析)功能
- DNS协议运行在UDP协议之上,使用端口号53
雅志困轩冕,遗恨寄沧洲
网友评论