传输层协议,也就是四层协议。
一、TCP协议
1、tcp和udp最主要的区别
- tcp:面向连接,在传递数据之前,会先测试,看通不通,如果通才会传输真实数据。慢但是稳定
- udp:无连接,连接前不测试主机的联通性,不看通不通,直接传递真实数据。快但是不靠谱。
2、TCP协议的特性
3、tcp报文段
(1)端口号
- 服务端一般是固定的,客户端随机产生;
- 前1024端口号基本已经被知名程序使用;
- 端口号的范围:2^16=65536,也就是从0-65535。
- 一个端口号只能被一个应用程序使用。(tcp80可以和udp80同时存在。)
- 协议的最终体现形式是某个程序。nginx 、apache
(2)确认号
小写的ack, 就是确定对方收到了我的包,并且约定我下一个包的序号+1
(3)控制位
控制位:描述了目前两台电脑处于什么阶段(请求连接、建立连接、半断开、断开连接)
- URG(紧急位):紧急数据,只有当URG=1时,才有效。
- PSH(急切位):表示是否要立即执行
- RST(重置位):如果出现了大错误,要重新传。(以上3个都表示比较紧急。)
- SYN(同步位):请求建立连接 SYN=1,请求建立连接。 SYN=1 ACK=1,同意建立连接。
- FIN(断开位):断开连接 FIN=1 ACK=1,意思是同意断开连接
- ACK(确认位):大写的ACK,确认同意连接/断开连接
(4)窗口大小
协商双方之间的数据包内存多大。
(5)校验和
确认数据包是否完整。
(6)选项部分
选项部分是可有可无的。
4、三次握手
- PC1向PC2发送SYN报文:seq=x SYN=1
- PC2向PC1发送SYN和ACK报文:seq=y ack=x+1 SYN=1 ACK=1
- PC1向PC2发送ACK报文:seq=x+1 ack=y+1 ACK=1
5、四次挥手
PC1向PC2,发送FIN和ACK报文:FIN=1 ACK=1 PC2向PC1,发送ACK报文:ACK=1 PC2向PC1,发送FIN和ACK报文:FIN=1 ACK=1 PC1向PC2,发送ACK报文:ACK=1
二、UDP协议
常见的udp端口号及其功能
端口 | 协议 | 说明 |
---|---|---|
69 | TFTP | 简单文件传输协议 |
111 | RPC | 远程过程调用 |
123 | NTP | 网络时间协议 |
三、Telnet协议
1、作用
测试远端服务器的端口。
2、语法
telnet+ip地址+端口,例如:telnet 192.168.1.1 80