一、前言
[计算机网络] 计算机网络和协议
[计算机网络] 物理层
[计算机网络] 数据链路层
[计算机网络] 网络层
计算机网络的传输层,是大厂技术方向、前后端岗位(如阿里巴巴 )笔试必考的,足以见证其在 IT 方面的重要性。
关键字:TCP
二、常见问题
1.TCP(Transmission Control Protocol)、UDP(User Datagram Protocol) 应用场景
1.1.TCP:建立会话、可靠传输(缺少了再传)、流量控制
【QQ传文件
】
【病毒
】
1.2.UDP:
【域名解析
】
【QQ聊天
】(发送失败得再发送,聊天内容多的话分多次 UDP 发送)
【多播、广播
】(发送方不需要和接收方建立连接进行可靠传输)
2.传输层和应用层协议之间的关系
- 端口号的取值范围:
0 ~ 65535
- 服务端
- 系统端口:
0 ~ 1023
- 登记端口:
1024 ~ 49151
- 系统端口:
- 客户端:
49152 ~ 65535
- 服务端
类型 | 端口 |
---|---|
HTTP | 默认使用TCP的80 端口标识 |
FTP | 默认使用TCP的21端口标识 |
SMTP | 默认使用TCP的25端口标识 |
POP3 | 默认使用TCP的110端口 |
HTTPS | 默认使用TCP的443端口 |
DNS | 使用UDP的53端口 |
远程桌面协议(RDP) | 默认使用TCP的3389端口 |
Telnet | 使用TCP的23端口 |
Windows | 访问共享资源使用TCP的445端口 |
微软SQL数据库 | 默认使用TCP的1433端口 |
mySQL数据库 | 默认使用TCP的3306端口 |
3.端口和服务
打开 cmd ,输入
netstat -n
,可以看到本机的 TCP 连接
4.用户数据报协议(UDP)
UDP 协议不实现可靠传输,而是将可靠传输和排序等功能交给上层应用来完成。
4.1.特点:
(1)无连接
(2)一次交付一个完整的报文
(3)支持一对一、一对多、多对一、多对多
4.2 UDP 首部格式
(1)源端口
(2)目的端口
(3)长度
(4)校验和
5.传输控制协议(TCP)
实现可靠传输、流量控制、拥塞避免
5.1.特点:
(1)每一条 TCP 连接只能有两个端点
(2)通过 TCP 连接传送的数据,无差错、不丢失、不重复、按序发送
(3)全双工通信
(4)面向字节流
5.2.可靠传输
5.2.1.停止等待协议
1 | 2 |
---|---|
5.2.2.连续 ARQ 协议 和 滑动窗口协议
1 | 2 |
---|---|
5.2.3.SACK(Selective Acknowledgment,选择确认)
使 TCP 只重新发送丢失的包,不用发送后续所有的分组,而且提供相应机制使接收方能告诉发送方哪些数据丢失,哪些数据已经提前收到等。
5.3.流量控制(flow control)
所谓的流量,就是让发送方的发送速率不要太快,要让接收方来得及接收
发送窗口取决于:接收方允许的窗口和拥塞窗口
图解 | PS |
---|---|
rwnd:receiver window |
5.4.拥塞控制
算法 | 图解 |
---|---|
慢开始 | |
拥塞避免 | |
快重传 | |
快恢复 |
6.TCP连接管理
三次握手
第一次
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:
TCP 连接的释放 需要经过
“四次挥手”
的过程
三、例子
1、一个 TCP 连接的数据传输阶段,如果发送端的发送窗口值由 2000 变为 3000 ,意味着发送端 在收到一个确认之前可以发送 3000B
四、大厂笔试题
五、其他
参考文献:
韩立刚 《计算机网络原理创新教程》
谢希仁 《计算机网络》