目录
TCP和UDP协议
TCP-传输控制协议
TCP是面向连接的、可靠的进程到进程的通行协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存接收缓存,用来临时存储数据。
UDP-用户数据报协议
UDP是一个无连接,不保证可靠性的传输层协议,也就是说发送端不关心发送的是否到达目标主机、数据是否出错,收到数据的主机也不会告诉发送方是否收到了数据。
- TCP报文段
TCP将若干个字节构成一个分组,称为报文段。TCP报文段封装在IP数据包中。如图所示:
IP首部 | TCP报文段 |
TCP报文段的首字格式,如图所示:
- 源端口号:发送方进程的端口号,16位字段。
- 目标端口号:接收端进程的端口号。接收端收到数据段后,根据这个端口号来确定把数据送个哪个应用程序的进程,16位字段。
- 序号:发送端为每个字节进行编号,便于接收端正确重组。
- 确认号:对发送端的确认信息。接收端响应消息时将会用它来告诉发送端这个序号之前的数据段都已经收到,如确认号是X,就时表示前X-1个数据段都已经收到。
- 首部长度:用它可以确认TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可以扩展到60字节。
- 保留:这部分保留位作为今后的扩展功能用,现在还没有使用到。
- 控制位:
- URG-紧急位。紧急指针有效位。
- ACK-确认为。只有当ACK=1时,确认序列号,字段才有效,ACK=0时,无效。
- PSH-急迫位。标志位为1时,要求接收方尽快将数据段送达到应用层。
- RST-重置位。当RST值为1时,通知重新建立TCP连接。
- SYN-同步(连接)位。同步序号位,TCP需要建立连接时,值设为1。
- FIN-断开位。当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1。
- 窗口值:说明本地可接收数据段的数目,这个值大小可以变化,当网络通畅时将这个窗口值变大可加快传输速度,当网络不稳定时可减小这个值保证网络数据的可靠传输。TCP协议中的流量控制机制就是依靠变化窗口值的大小实现的。
- 校验和:用来做差错控制。字段检验的范围包括首部和数据这两部分。数据段在发送时和到目的地时会进行校验和计算,若这两次的检验和一致,说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据。
- 紧急指针:和URG配合使用,当UGR=时有效。
- 选项:在TCP首部可以有多达40字节的可选信息。eg:最大报文段长度MSS(Maximum Segment Size)。MSS告诉对方TCP:“我的缓存所能接收的报文段的做大长度时MSS个字节。”
TCP的三次握手
如图所示:
客户端主机1发送一个报文连接请求,(SYN=1,Seq=X),服务端收到报文后对客户端有所响应(SYN=1,ACK=1,ack=X+1,Seq=y),客户端再给服务器一个响应,收到了请求之后,也发送一个ACK报文给主机1(ACK=1,ack=y+1,Seq=X+1)连接完成后,可以正常的传输数据。
TCP断开连接的四次挥手
如图所示:
客户端主机1向服务器端主机2发送一个FIN关闭连接请求,服务器端住进2收到这个FIN,它发回一个ACK,请求客户端主机1确认。(和SYN一样,一个FIN将占用一个序号)服务器端主机2关闭与客户端主机1连接,发送一个FIN给客户端主机2。客户端主机1发回ACK报文确认,完成断开连接。
常见的端口号
TCP端口及其应用
端口 | 协议 | 说明 |
21 | FTP | FTP服务器所开放的控制端口 |
23 | TELNET | 用于远程登录,可以远程控制管理目标计算机 |
25 | SMTP | SMTP服务器开放端口,用于发送邮件 |
80 | HTTP | 超文本传输协议 |
22 | SSH | 远程登录的密文 |
53 | DNS | 用于连接DNS服务器 |
110 | POP3 | 用于邮件的接收 |
UDP端口及其应用
端口 | 协议 | 说明 |
69 | TFTP | 简单文件传输协议 |
111 | RPC | 远程过程调用 |
123 | NTP | 网络时间协议 |
53 | DNS | 解析作用(域名解析成IP地址) |
161 | SNMP | 简单网络管理协议 |