一、TCP(Transmission Control Protocol)
1、传输控制协议(Transmission Control Protocol,TCP):一种可靠的、面向连接的字节流服务。
1.1建立连接:源主机在传送数据前,先和目标主机建立连接。
1.2传输数据:在连接上,被编号的数据段按序收发,同时对每个数据段进行确认。如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段。
1.3释放连接:数据传输完成,和目标主机断开连接。
2、TCP的三种机制:
2.1使用序号对数据报进行标记:便于TCP接收服务在向高层传递数据之前调整失序的数据包。
2.2TCP使用确认、校验和定时器系统提供可靠性:当接收者按照顺序识别出数据报未能到达或发生错误时,接收者将通知发送者;当接收者在特定时间没有发送确认信息时,发送者认为发送的数据包并没有到达接收方,会考虑重传数据。
2.3TCP使用窗口机制调整数据流量:减少因接收方缓冲区满而造成丢失数据报文的可能性。
3、TCP报文格式
3.1源端口(Source Port)、目的端口(Destination Port):各16位,通过使用端口来标识源端和目标端的应用进程。(0~65535)
3.2发送顺序号(Sequence Number):32位,序号值是进行mod 运算的值。取值范围(0,
-1)
3.3接收顺序号(Acknowledgement Number):32位,收到下一个报文段的第一个数据字段的顺序号。
【接收顺序号为N,表示N-1之前的数据都正确收到。】
3.4偏置值(Header Length):又称报头长度,4位。没有任何选项字段的TCP头部长度为20字节,最多可以有60字节。
3.5保留字段(Reserved):6位,通常为0
3.6标记(Flag):6位
URG——紧急,需要尽快传送
ACK——确认,建立连接后的报文回应,ACK设置为1
PSH——推送,接收方应该尽快将这个报文段交给上层协议,无需等缓存满
RST——复位,重新连接
SYN——同步,发起连接
FIN——终止,释放连接
3.7窗口大小(Windows Size):16位,用来进行流量控制,单位:字节。
3.8校验和(CheckSum):16位,对整个TCP报文段(TCP头部+TCP数据)进行校验和计算,
目标端进行验证。
3.9紧急指针(Urgent Pointer):16位,偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
3.10任选项(Option):0~40字节。保证报头长度是32位的倍数(不足填充0)。【窗口扩大因子、时间戳等选项】
4、TCP建立、释放连接
二、UDP(User Datagram Protocol)
1、用户数据报协议(User Datagram Protocol,UDP):一种不可靠的、无连接的数据报服务。源主机在传送数据前不需要和目标主机建立连接,数据附加了源端口号和目标端口号等UDP报头字
段后直接发往目的主机。
2、UDP报文格式
2.1源端口(Source Port)、目的端口(Destination Port):各16位,通过使用端口来标识源端和目标端的应用进程。
2.2长度:16位,标明UDP头部和UDP数据的总长度字节。
2.3校验和(CheckSum):16位,对UDP头部和UDP数据进行校验,有错丢弃。
三、端口
1、协议端口号(Protocol Port Number,Port):标识目标主机进程的方法。
【TCP/IP使用16位的端口号来标识端口(0~65535)】
2、端口分为:系统端口、登记端口、客户端使用端口
2.1系统端口(0~1023)
2.2登记端口:为没有熟知端口号的应用程序使用。(1024~49151)【在IANA登记以避免重复】
2.3客户端使用端口:仅在客户进程运行时候动态使用,使用完毕后,进程会释放端口。(49152~65535)