TCP: 传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
特点:面向连接,可靠,传输效率低
应用场景:web浏览器,电子邮件,文件传输程序
外卖员-->快递必须送到我们的手中
UDP: 用户数据报协议,属于无连接的传输协议
特点:无连接、不可靠、快速传输
应用场景:域名系统(DNS),视频流,IP语音(VOIP)
外卖员-->快递放在门口
TCP UDP协议端口号范围 1 - 65535 (可以的),真正端口号总数为2的16次方=65536
面向连接:是指通信双方在通信时,要事先建立一条通信线路,其有三个过程:建立连接、使用连接和释放连接。
面向无连接:是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输。
控制字段介绍
ACK:表示确认控制字段,确认数据是否接收到
SYN:表示请求建立连接字段,和主机建立连接时使用
FIN:表示请求断开连接字段,和主机断开连接时使用
PSH: 表示有DATA数据传输,PSH为1表示的是有真正的TCP数据包内容被传递
RST: 表示连接重置。一般是在FIN之后才会出现为1的情况,表示的是连接重置。
seq序列号:将大的数据进行拆分后标记序列信息,便于接收方将拆分后的数据信息进行组装,在原有序列号基础上+1进行回复,告知发送方下次再给我发送的数据是什么
TCP三次握手 的过程:
第1次:
A向B 发送 请求连接 信号, SYN=1(我想和你建立连接), seq =x (我给你第一个包)。
第2次:
B 向A, 发送,我也想跟你建立连接, ACK=1 (确认收到消息) SYN=1(我也想和你建立连接),seq=y(我给你第一个包)
第3次:
A向B 发送: 好的,我们可以通信了, ACK=1 (我收到了) seq=x+1(给B的第2个数据包), ack = y+1 (你下次该给我y+1的包了)
(1)ACK字段(即上图的32位确认序号):该字段存放的信息为期望收到对方下一个报文段的第一个数据字节的序号。
(2)ack字段(即上图的6个标志位之一ACK标志位):在[TCP报文]段中,字段ack=1时,确认号字段才有效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
记住一点: seq = 上次的ack , ack= 上次的seq +1
白眉大叔的抓包过程:
wireshark 使用方式: