目录
TCP 和UDP协议
TCP/IP协议族的传输层协议
- TCP (Transmission Control Protocol)
- 传输控制协议
- UDP(User Datagram Protocol)
- 用户数据报协议
TCP协议
TCP是面向连接的,可靠的进程到进程通信的协议
TCP提供全双工服务,即数据可在同一时间双向传输
TCP报文
- TCP将若干个字节构成一个分组,叫报文段(Segment)
- TCP报文段封装在老婆数据中
TC报文段
源端口号:发送方进程的端口号,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报文
PC1使用一个随机的端口号(Seq=x)向PC2发送建立连接请求(SYN=1)
2.第二次握手,发送SYN+ACK报文
PC2收到了PC1的消息,向PC1回复一个确认信息(Seq=y,Ack=x+1),然后再向PC2发送一个建立连接的请求(SYN=1,ACK=1)
3.第三次握手,发送ACK报文
PC1收到了PC2的回复(包括请求和确认),也要向PC2再发送一个确认信息,Seq=x+1(第一次握手时是x,所以这次是x+1),Ack=y+1,ACK=1=
列如:pc1问pc2:你在吗,pc2回应一句在,然后问pc1你有什么事啊,pc1接收到pc2的回答,pc1就吧事情告诉给pc2,pc2就知道了
TCP断开连接的四次握手
第一次挥手:PC1向PC2发送报文(FIN=1,ACK=1)
第二次挥手:PC2收到后回复确认ACK报文(AKC=1)
第三次挥手:PC2向PC1也发送FIN/ACK报文(FIN=1,ACK=1)
第四次挥手:PC1收到后,最后向PC2发送确认报文(ACK=1)
常用的TCP端口号及其功能
端口 | 协议 | 说明 |
21 | TFP | FTP服务所开放的控制端口 |
23 | TELNET | 用于远程登录,可以远程控制管理目标计算机 |
80 | HTTP | 超文本传输协议 |
443 | HTTPS | 用SSL/TLS对数据进行加密和解密,Http进行传输 |
25 | SMTP | SMTP服务器开放的端口,用于发送邮件 |
110 | POP3 | 用于邮件的接收 |
53 | DNS | 域名解析 |
UDP协议
无连接,不可靠的传输协议
花费的开销
UDP报文的首部格式
UDP长度:用来指出UDP的总长度,为首部加上数据
校验和:用来完成对UDP数据的参错检验,它是UDP协议提供的唯一的可靠机制
常用的UDP端口号及功能
端口 | 协议 | 说明 |
69 | TFTP | 简单文件传输协议 |
111 | RPC | 远程过程调用 |
123 | NTP | 网络时间协议 |
161 | SNMP | 简单网络管理协议 |
53 | DNS | 域名解析 |