TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。
为了保证传输的可靠性,在正式收发数据前,必须和对方建立可靠的连接。TCP每发出一个数据包都要求确认,如果有数据包丢失,发送方就需要重发这个数据包。
TCP特性:
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
TCP协议头部信息包含以下字段:
1. 源端口号和目的端口号:16位,用于标识源主机和目的主机的应用进程。
端口号:区别应用程序(区别 tcp udp 协议)
客户端的端口号:随机的
服务端的端口号:一般固定的
端口号区别七层协议
范围:0-65535 前1024是知名 80http ftp21 20 ssh22 telnet23 tftp udp69
端口号 不可以重复使用,一个端口号对应一个程序
2. 序列号:32位,用于标识发送的数据流中的数据段的编号,用于重组数据流。
3. 确认号:32位,用于标识期望接收的下一个数据段的序列号。
4. 数据偏移:4位,指定TCP报文头部的长度,以4字节为单位。
5. 保留位(Reserved):6位,保留未来使用。
6. 标志位(Flags):6个标志位,用于控制TCP连接的建立、维护和关闭。
7. 窗口大小(Window):16位,用于通知发送方可用的缓存空间大小,以控制发送方的传输速率。
8. 校验和(Checksum):16位,用于保证TCP头部和数据的正确性。
9. 紧急指针(Urgent Pointer):16位,用于指出紧急数据的末尾位置。
10. 选项(Options):可变长度,用于包含一些额外的控制信息,如最大段长度、时间戳、窗口缩放等。
控制位:
三次握手的目的是确保双方都已准备好进行数据传输,并且确保双方的初始序列号是正确的。
TCP 三次握手的过程:
为什么是三次握手而不是2次:为网络复杂为了确保数据能够到达,2次不够,4次多余,三次正好
四次握手(Four-way handshake)是TCP连接的释放过程。它是TCP连接的正常终止方式,用于确保连接的可靠关闭。
客户端先发送一个FIN给服务端,自己进入FIN_WAIT_1状态,这时等待接收服务端报文,该报文会有二种可能:
ACK=1 进入半关闭
ACK=1 FIN-1 同意断开
UDP协议的数据包格式:
包含四个字段:源端口号、目的端口号、长度和校验和。
数据字段:应用数据
UDP特性:
1.工作在传输层
2.提供不可靠的网络访问
3.非面向连接协议
4.有限的错误检查
5.传输性能高
6.无数据恢复特性
UDP端口号:
注:
telnet 协议:明文传输
telnet ip地址 端口号 80 服务软件是否正常
Wireshark是一款网络协议分析工具,可以捕获和分析通信协议数据包。它能够解码各种网络协议,包括TCP/IP、HTTP、FTP、SMTP等,还可以对网络通信进行流量分析和报文分析,帮助开发人员和网络管理员解决网络故障和安全问题。
Wireshark能够捕获网络中的数据包,并且对捕获的数据包进行详细分析。通过Wireshark,用户可以看到所有网络通信的细节,包括每个数据包的源和目的地址、数据包类型、数据包的负载、每个数据包的时间戳和传输速率等信息,可以非常方便地了解网络通信的情况。
Wireshark还提供了强大的过滤功能,可以根据协议、源地址、目的地址、端口等条件来过滤数据包,从而帮助用户快速找到关注的信息。