TCP协议介绍
TCP (Transmission Control Protocol )传输控制协议
TCP: 面向连接 可靠的 接不到可以重新传 速度慢
TCP特性:
- 工作在传输层
- 面向连接协议
- 全双工协议
- 半关闭
- 检查错误
- 将数据段打包成段,排序
- 确认机制
- 数据恢复,重传
- 流量控制,滑动窗口
TCP报文格式
源端口、目标端口: 计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。
序列号: 表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。
确认号:(ack)表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。
数据偏移/首部长度: 表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。
控制位 (决定A和B目前处于什么状态)
URG(紧急位):表示本报文段中发送的数据是否包含紧急数据。(是否有紧急数据)
SYN(同步位):在建立连接时使用,用来同步序号。(请求建立连接)
ACK(确认位):表示是否前面确认号字段是否有效。(已经建立连接)
PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。(紧急的数据立刻读出出来)
RST(重置位):如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。 (发生严重错误,重新连接)
FIN(断开位):表示通知对方本端要关闭连接了,标记数据是否发送完毕。(断开连接)
校验和: 提供额外的可靠性紧急指针:标记紧急数据在数据字段中的位置
选项部分: 其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节
端口号的作用: 确定进程(两个进程通信需要通过端口号确定)
三类端口:
1规定好的知名的端口号80 443 人为规定
2系统随机分配
3.人类自由使用
三次握手
- 第一次:pc1发送请求建立连接的报文(SYN)给pc2,报文包括pc1随机产生序号(seq)和建立连接的请求(SYN)
- 第二次:pc2接收到后会向pc1发送请求建立连接和已经建立连接的报文(SYN+ACK)给pc1,报文包括pc2随机产生的序号(seq)、指定pc1下次发送消息的序号(Ack)、建立连接的请求(SYN)和已经建立连接(ACK)
- 第三次:pc1接收到后发送已经建立连接的报文(ACK)给pc2,报文包括pc2指定的序号(seq)、指定pc1下次发送消息的序号(Ack)、已经建立连接(ACK)
四次挥手
- 第一次:pc1发送断开连接(FIN)和已经建立连接(ACK)的报文给pc2,报文包括断开连接(FIN)和已经建立连接(ACK)
- 第二次:pc2发送已经建立连接(ACK)报文给PC1,属于半关闭连接,报文包括已经建立连接(ACK)
- 第三次:pc2发送断开连接(FIN)的报文给pc1,报文包括断开连接(FIN)
- 第四次:pc1向pc2发送确定报文
UDP协议介绍
UDP (User Datagram Protocol )用户数据报协议
UDP: 不可靠 接不到不会重新传输 速度快
UDP特性:
- 工作在传输层
- 提供不可靠的网络访问
- 非面向连接协议
- 有限的错误检查
- 传输性能高
- 无数据恢复特性
常见协议及其端口
| 端口 | 协议 | 说明 |
|---|---|---|
| 21 | FTP | FTP服务器所开放的控制端 |
| 23 | TELNET | 用于远程登录,可以远程控制管理目标计算机 |
| 25 | SMTP | SMTP服务器开放的端口,用于发送邮件 |
| 80 | HTTP | 超文本传输协议 |
| 110 | POP3 | 用于邮件的接收 |
| 69 | TFTP | 简单文件传输协议 |
| 111 | RPC | 远程过程调用 |
| 123 | NTP | 网络时间协议 |