TCP/UDP说明
TCP :传输控制协议 面向连接的协议,(同步传输)可靠的传输协议
UDP :用户报文协议 无连接协议 (异步传输) 不可靠传输协议
系统中
异步传输数据 :类似离线传输 不需要进行确认
优点 :传输效率高
缺点 :安全性不高
同步传输数据 :类似在线传输 需要对方进行确认
优点 :安全性高
缺点 :传输效率低
重点!
TCP协议中重要原理
TCP三次握手过程 -- 完成网络连接建立
TCP报文结构:
a 源端口地址 : 返回数据包的目标端口地址
b 目标端口地址 :要和服务端那个网络服务建立连接
端口的数值范围:1-65535 :这个数值是通过报文结构获知的
根绝报文结构 源端口和目标端口各占用16bit
占用了1bit
端口范围:0 1 两种 (0-1)
占用了2bit
端口范围 :00 01 10 11 四种 (0-3)
占用了3bit
端口范围 :000 001 011 111 100 110 101 010 八种 (0-7)
占用了16bit
端口范围 :2的n次方 n表示占用了多少bit 2^16=65536 (0-65535)
一般0号端口不被使用。 1--65535
Sequence Number (序列号)
Acknowledgement (确认号)
重点!
特殊的6bit作为报文结构中的控制位
syn --- 请求建立连接控制字段
ack --- 表示确认控制字段
fin --- 请求断开连接控制字段
说明:控制字段数值置为1表示控制功能开启,默认为0
三次握手详细过程:
第一次握手:发送TCP数据报文 客户端 -- 服务端
a:TCP数据报文中,需要将SYN控制字段改为1
b: TCP数据报文中,需要将sep序列号信息发出 seq=x
第二次握手:发送TCP数据报文 服务端 -- 客户端
a:TCP数据报文中,需要将ack控制字段改为1
b:TCP数据报文中,需要将syn控制字段改为1
c:TCP数据报文中,同时将ack确认号信息发出 ack=x+1
d:TCP数据报文中,同事将sep序列号信息发出 seq=y
第三次握手:发送TCP数据报文 客户端 -- 服务端
a:TCP数据报文中,需要将ack控制字段改为1
b:TCP数据报文中,同时将ack确认号信息发出 ack=y+1
c:TCP数据报文中,同时将sep序列号信息发出 seq=x+1
TCP四次挥手过程 -- 完成网络连接断开
第一次挥手 : 发送TCP数据报文 客户端 -- 服务端
a:TCP数据报文中,需要将fin控制字段改为1
b:TCP数据报文中,同时将ack控制字段改为1
也包含seq和ack确认号信息
第二次挥手 : 发送TCP数据报文 服务端 -- 客户端
a:TCP数据报文中,需要将ack控制字段改为1
第三次挥手 : 发送TCP数据报文 服务端 -- 客户端
a:TCP数据报文中,需要将ack控制字段改为1
b:TCP数据报文中,同时将fin控制字段改为1
第四次挥手 :发送TCP数据报文,客户端 -- 服务端
a: TCP数据报文中,需要将ack控制字段改为1
扩展:如何抓取网络数据包(抓包软件)
windows:wireshark
linux :tcpdump 命令(课下总结参数,使用方法 )