TCP协议属于4层传输层协议! 传输层包括两大协议:TCP 和 UDP (2个协议的区别是什么?)
TCP协议:面向连接的服务(重传机制)、可靠传输数据、速度慢 UDP协议:无连接服务、不可靠、速度快 TCP与UDP的共同作用:通过源与目标端口号,来完成进程到进程的通信!
源端口号:一般客户机的源端口号都是随机的,且一般都是50000以上!
目标端口号:一般服务器上的目标端口号都是固定,如80、443、23、53
端口号范围:0-65535 0与65535有特殊用途、一般1-65534可用 1-1024区间基本被国际标准组织占用分配给了固定的服务器、如20、21、80、443、53、67、68等等
序号:seq,对每个报文字节的编号
确认号:ack,确认对方的报文
六位控制位:
SYN:请求建立连接位!!
FIN:请求断开连接位!!
RST:(Reset)重置位!!(强制断开位!!)
ACK:确认控制位!当ACK=1时,ack有效,当ACK=0,ack无效
PSH:push,推送位!当PSH=1时,代表有上层数据,需要推送数据到上层,反之为没有!
URG:urgen,紧急位!URG=1时,代表紧急数据需要第一时间推送给应用层,需要配合紧急指针完成工作!
窗口大小windows:用来做流量控制!类似与水龙头!
校验和:校验4+5层数据,也就是校验数据段!!!
UDP包头长度:8个字节
UDP长度字段:代表4+5层数据的总长度
UDP校验和:校验4+5层数据,也就是校验数据段!!!也可能本字段是是UDP协议唯一的可靠机制!
重点:SYN只有双方前2次握手为1,代表彼此要建立连接! 面试题: 问:为什么TCP可靠? 答:因为TCP是面向连接服务,同时双方发送的每一个报文都有编号机制与确认重传机制,所以可以保证数据传输的可靠性!!同时TCP每发送一个报文后,都会开启一个重传计时器,以便防止数据中途丢失,而可以重传!
案例:抓telnet/ftp/http报文 环境 win7客户机(抓包) + win2003服务器(Telnet/HTTP/FTP)