天天看点

【干货】详解TCP和UDP的连接及三次握手&8

特别说明:本文为原创内容,但部分图片来源于网络(本章使用思科模拟器(Cisco Packet Tracer)作为实验软件)

# 8.TCP和UDP

【干货】详解TCP和UDP的连接及三次握手&8

TCP:可靠传输、面向连接;速度相比UDP要慢,但是准确性高

UDP:不可靠传输、非面向连接;速度相比TCP要快,但是准确性差

面向连接:如果某个应用层协议的四层使用TCP端口,那么在该协议正式传输数据包之前,必须先建立连接,只有建立完连接之后才可以传输数据。

可靠传输:客户端收到数据包之后,需要发送TCP的ACK确认包,并告诉服务端接下来要收的数据包序号。同时该过程确定了两者传输的"windows滑动窗口"大小,如下图所示:接收方只能收2个数据包,所以会发送“ACK3 Window size=2”把发送方发送的"Window size =3 send 3"丢弃掉

【干货】详解TCP和UDP的连接及三次握手&8

滑动窗口:

滑动的意义是因为客户端的接收能力不一样,所以接收端和发送端互相要确认一次最大的数据发送量,如图所示:

【干货】详解TCP和UDP的连接及三次握手&8

如下图所示:

192.168.1.9HTTP访问192.168.2.09的过程中,详解TCP三次握手连接的建立:

首先可以看到PC1首先发送一个带“SYN”的Resquest请求TCP连接的数据包给192.168.20.9,然后192.168.20.9给PC1回复“SYN+ACK”的Reply数据包以确认,最后PC1再一次回复“ACK”给192.168.20.9如下图所示:

【干货】详解TCP和UDP的连接及三次握手&8
【干货】详解TCP和UDP的连接及三次握手&8
【干货】详解TCP和UDP的连接及三次握手&8
【干货】详解TCP和UDP的连接及三次握手&8
【干货】详解TCP和UDP的连接及三次握手&8
【干货】详解TCP和UDP的连接及三次握手&8

注:PC1再一次向192.168.20.9发送“ACK”确认TCP连接的同时就开始和192.168.20.9交互HTTP数据包,如下图所示:

【干货】详解TCP和UDP的连接及三次握手&8
【干货】详解TCP和UDP的连接及三次握手&8

三次握手:面向连接的高层协议在正式传输数据之前需要先建立连接,建立连接的过程需要来回交互三个报文:①SYN、②SYN+ACK、③ACK;我们称建立连接的过程称为三次握手;

当192.168.20.9和PC1交互完了HTTP数据之后,会向PC1发送含有“PSH+ACK”的TCP数据包,那么PC1这时候就会发送含有“FIN+ACK”的TCP数据包结束本次TCP连接,如下图所示:

【干货】详解TCP和UDP的连接及三次握手&8
【干货】详解TCP和UDP的连接及三次握手&8

常用的TCP服务器端口:

一般情况下TCP的1到1024端口都是固定端口,每个端口都已被公认被某个服务所用掉了,例如:

HTTP:TCP的80端口

Telnet: TCP的23端口

FTP :TCP的20,21两个端口

RDP :TCP的3389端口

VNC :TCP的5900

扩展知识:平时在CMD窗口下可以用telnet命令测试某个端口是否开起,如图:

【干货】详解TCP和UDP的连接及三次握手&8

扩展知识:wireshark过滤规则:

ip.addr==11.22.33.44 过滤出包含11.22.33.44的数据包

ip.src==X.X.X.X 过滤出源IP地址X.X.X.X

ip.dst==X.X.X.X 过滤出目标IP地址X.X.X.X

tcp.port==80 过滤出端口80的

tcp.dstport==80 过滤出目标端口为80的

tcp.srcport==80 过滤出源端口为80的

eth.src==XX:XX:XX:XX:XX:XX 过滤出MAC地址XX:XX:XX:XX:XX:XX的

VNC;HTTP;ARP 过滤高层协议

支持and且,or或,not非,以及( )组合;例如:tcp or http and (not vnc)就是过滤出来TCP或HTTP协议,但是不包括VNC协议;

(未完待续。。。。。。)