UDP是一个数据包传输
而传输控制协议TCP是将数据分段,分成多个数据包来传输。
流量控制,避免网络拥塞
点到点通信,IP地址+端口代表一个点(socket)。
全双工通信,同时发和收数据。发数据后要有反馈。确认收到,流量控制,如果数据处理不过来,就减慢数据传送的速度。
面向字节流传输。
可靠传输:超时重传、确认包丢失、确认包迟到等情况。停止等待协议,一种自动重传方式。
但是,信道利用率低,等待时间长。等待时间是往返时间RTT加接收(发送)确认包时间Ta。有用时间是发送数据的时间Td。信道利用率=Td/(Td+RTT+Ta)
提高信道利用率,使用流水线传输。发送窗口中的数据包,连续发送,不用等待确认后再发送下一个数据包。窗口中的数据包需要收到确认后才能从缓存中删除。
累积确认。一个确认包来确认收到的连续的数据包。
TCP首部:
目标端口、源端口
序号:数据部分的首个字节在整个文件的位置。
确认号:对方要发第几个字节开始的数据包给自己,意味着前面的字节已收到,在对方的缓冲中可以删除。
数据偏移:4位。确定报文的首部长度。1位代表4个字节,首部最大长度为4X15=60个字节,固定首部的长度为20字节。
Urg =1时优先发送,不需要在缓存中排队。
Ack =0时确认号无效,=1时确认号有效
Syn 同步,用于建立会话。 请求建立会话:ack=0,syn=1,没有数据,序号=0,确认号=0
响应:syn=1,ack=1,确认号=1,序号=0
Syn攻击:通过任意源IP地址不断向目标主机发送请求建立TCP连接来攻击目标主机(xp系统)
Land攻击:通过让目标地址请求与自身建立TCP连接,使目标主机瘫痪。
Psh 优先将接收的数据直接给应用程序,在缓存中不需要排队。与urg对应
Rst重新建立TCP连接
Fin数据传完,释放连接。