TCP协议
TCP是面向连接的、可靠的、进程到进程通信的协议。 提供全双工服务,即数据可在同一时间双向传输。
TCP报文段
源端口号(16)49152-65535 | 目标端口号(16)0-1023 | |||||||
序号(32) | ||||||||
确认号(32) | ||||||||
首部长度(4) | 保留(6) | URG | ACK | PSH | RST | SYN | FIN | 窗口大小(16) |
校验和(16) | 紧急指针(16) | |||||||
选项 |
紧急比特URG---当URG=1时,表明紧急指针字段有效,它告诉系统此报文字段中有紧急数据,应尽快发送 确认比特ACK---只有当ACK=1时确认号才有效,当ACK=0确认号则无效,用于确认发送方的数据
推送比特PSH---接受TCP收到推送比特置1的报文段,就尽快的交付给接受应用进程,而不是再等到整个缓存填满后再向上交付 复位比特RST---当RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,再重新建立连接
同步比特SYN---同步比特SYN置为1,表示这是一个连接请求或者连接接受报文 终止比特FIN---用来释放一个连接,当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放连接
紧急指针:指出在本报文段中的紧急数据的最后一个直接的序号。 选项:长度可变,TCP只规定了一种选择,即最大报文段长度
(重要)源端口号(16)(49152-65535):随机的
目标端口号(16)(0-1023)
TCP连接
-
建立连接
①SYN
Seq=x,SYN=1
②SYN+ACK
ACK=1,Ack=x+1,SYN=1,Seq=y
③ACK
ACK=1,Ack=y+1,Seq=x+1
-
关闭连接(四次挥手)
①FIN/ACK
FIN=1,ACK=1,seq=b
②ACK
ACK=1,ack=b+1
③FIN/ACK/ack
FIN=1,ACK=1,ack=b+1,seq=c
④ACK
ACK=1,ack=c+1,seq=b+1
UDP协议
无连接,不可靠的传输协议
花费的开销小、效率高
UDP报文
源端口号(16) | 目标端口号(16) |
UDP长度(16) | UDP校验和(16) |
常见的TCP、UDP端口
TCP端口
协议 | 端口号 |
---|---|
FTP | 21、20 |
HTTP | 80 |
SSH | 22 |
Telnet | 23 |
SMTP | 25 |
UDP端口
69 | TFTP | 简单文件传输协议 |
---|---|---|
111 | RPC | 远程过程调用 |
123 | NTP | 网络时间协议 |
162**、161** | SNMP | 简单网络管理协议 |
67**、68** | DHCP | 动态主机配置协议 |
53 | DNS | 域名解析服务 |
传输层如何能够准确的将数据交给特定应用?
端口号
需要知道
TCP头部格式记住一些,TCP三次挥手,四次握手,TCP和UDP区别