特别说明:本文为原创内容,但部分图片来源于网络(本章使用思科模拟器(Cisco Packet Tracer)作为实验软件)
# 8.TCP和UDP
TCP:可靠传输、面向连接;速度相比UDP要慢,但是准确性高
UDP:不可靠传输、非面向连接;速度相比TCP要快,但是准确性差
面向连接:如果某个应用层协议的四层使用TCP端口,那么在该协议正式传输数据包之前,必须先建立连接,只有建立完连接之后才可以传输数据。
可靠传输:客户端收到数据包之后,需要发送TCP的ACK确认包,并告诉服务端接下来要收的数据包序号。同时该过程确定了两者传输的"windows滑动窗口"大小,如下图所示:接收方只能收2个数据包,所以会发送“ACK3 Window size=2”把发送方发送的"Window size =3 send 3"丢弃掉
滑动窗口:
滑动的意义是因为客户端的接收能力不一样,所以接收端和发送端互相要确认一次最大的数据发送量,如图所示:
如下图所示:
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如下图所示:
注:PC1再一次向192.168.20.9发送“ACK”确认TCP连接的同时就开始和192.168.20.9交互HTTP数据包,如下图所示:
三次握手:面向连接的高层协议在正式传输数据之前需要先建立连接,建立连接的过程需要来回交互三个报文:①SYN、②SYN+ACK、③ACK;我们称建立连接的过程称为三次握手;
当192.168.20.9和PC1交互完了HTTP数据之后,会向PC1发送含有“PSH+ACK”的TCP数据包,那么PC1这时候就会发送含有“FIN+ACK”的TCP数据包结束本次TCP连接,如下图所示:
常用的TCP服务器端口:
一般情况下TCP的1到1024端口都是固定端口,每个端口都已被公认被某个服务所用掉了,例如:
HTTP:TCP的80端口
Telnet: TCP的23端口
FTP :TCP的20,21两个端口
RDP :TCP的3389端口
VNC :TCP的5900
扩展知识:平时在CMD窗口下可以用telnet命令测试某个端口是否开起,如图:
扩展知识: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协议;
(未完待续。。。。。。)