协议 1、TCP协议 1、介绍 传输控制协议(Transmission Control Protocol TCP)。TCP协议工作于传输层。 2、TCP连接状态 连接创建 数据传输 连接终止 3、创建连接过程(三次握手) 1、客户端主动发送一个 [SYN置位的为1的报文段] (TCP头部SYN位'置位'),同时指明自己要连接的 [端口号] 以及 [初始化序列 (ISNc)] , 通常客户端还会发送一个或多个 [选项] 。这个报文段称为段1 {SYN,Seq=ISNc,选项} 2、服务端也发送 [SYN报文段] 作为响应,其中也包含自己的 [初始化序列 ISNs] 。同时,服务器端为了确认收到客户端的 SYN报文段,将接收到的INSc+1作为 ACK [ACK=INSc+1] 返回客户端。这个报文段为段2 {SYN+ACK,Seq=ISNs,ACK=ISNc+1,选项} 3、客户端为了确认服务器的SYN,将服务器端的 ISNs+1 作为ACK数值返回。这个报文段称为段3 {ACK,Seq=INSc+1,ACK=ISNs+1,选项} 记忆:利用 SYN报文段 交换自己的初始化序列 ISN,并使用 ACK 对接收到的 Seq 进行确认 4、连接终止过程(四次断开) 1、{FIN+ACK,Seq=K,ACK=L,选项} 主动发起断开连接的一方发送一个FIN置位的报文,报文中包括上一次接收的确认码ACK=L,以及自己当前的序列号K 2、{Seq=L,ACK=K+1,选项} 被动关闭者收到主动发起断开者的请求后,被动关闭者将接收到的Seq+1响应给主动发起关闭者 3、{FIN+ACK,Seq=L,ACK=K+1,选项} 被动关闭者此时将身份转换为主动关闭者,同样给主动关闭者发送一个FIN报文,这个报文的序列号的L 4、{ACK,Seq=K,ACK=L+1,选项} 5、TCP协议保证连接的可靠性的机制 1、序列号和确认机制 在创建TCP连接时,建立连接的双方交换初始序号(INS),这个序号是对传输过程中的字节进行计数的一个整数, 发送方认为字节编号是序号,接收方认为字节编号是确认号,当发送一个量的字节数后,接收方会进行确认。每 传输一个字节,INS号都会增加1。INS用32位进行表示,当穷尽2的32次方后,INS又变为1。 在发送方未收到接收方的确认时,发送方都会将缓存分组的一个副本,以便及时重传,等收到确认后,发送方 释放分组。 ISN(Inital Sequence Number) 2、流量控制 3、重传计时器 4、校验和 5、双工服务 6、拥塞控制 6、相关术语 1、ACK 用于确认信息是否正确到传输到接收端的标记讯号 2、自动重复请求 (Automatic Repeat Request ARQ),处理差错的的一种重要手段,请求重新发送 3、序列号 Seq (sequence number) 避免接收方收到重复的分组 4、窗口大小 (window size) 发送方已经发送,但接收方还没有确认的分组的集合,把这个窗口中的分组数量称为分组大小。 5、流量控制 (flow control) 当接收方相对于发送方的太慢时,接收方会强迫发送方慢下来。 达到流量控制的方法:基于速率;基于窗口大小 6、面向连接 指使用TCP协议通信的两个程序在通信之前,必须建立TCP连接。 7、报文段 (segment) 由传输层传给IP层的块称为报文段 8、校验和 检测传送中引入的比特差错,如果校验和无效,TCP则将它丢弃,并进行重传 9、重传计时器 发送一个窗口大小的数据,TCP设置一个计时器,如果在计时器时间内,没有收到确认,则进行重传数据 10、一个IP地址和端口组合被称为一个短点或套接字 11、SYN报文段 建立新连接时,客户机发送给服务器的第一个报文段,这个报文段的SYN为被启用 12、MSL 最大数据段生存期 从TIME_WAIT状态到CLOCE状态的超时时长,这个时长是2*MSL 。官方标准的MSL是2分钟 13、PDU 协议数据单元 7、TCP/IP实际应用模型 应用层 传输层 TCP 网络层 IP 数据链路层 物理层 8、TCP头部和封装 1、TCP报文段包含两部分: TCP头部:20字节(不含选项);带选项的TCP头部可达60字节。 TCP(应用程序)数据 9、TCP头部 标准的TCP头部是20个字节,带有选项的TCP头部超过20个字节。。。 源端口 16位 | 限制的端口的数量是65535个端口 目的端口 16位 序列号 32位 | 表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字 节都会按顺序编号。由于序列号由32位表示,所以每2^32从个字节,就会出现序列号回 绕,再次从0开始 确认号 32位 | 确认接受的数据包 头部长度|数据偏移 4位 | 限制了TCP头部长度最多为60字节 保留位 4位 CWR 1位 | 拥塞窗口减,发送方降低他的发送速率 ECE 1位 | ECN回显,发送方收到一个更早的拥塞通告 URG 1位 | 紧急指针(很少被用) *ACK 1位 | 确认,建立连接后被启用。只有ACK=1时,全面的确认号有效 PSH 1位 | 提示接收端应用程序应该立即从TCP 接收缓冲区中读走数据,为接收后续数据腾出空间 如果为1 ,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程 序不将接收到的数据读走,就会一直停留在TCP接受缓冲区中 RST 1位 | 重置连接,连接取消 *SYN 1位 | 初始化一个连接的同步序列号 Synchronous *FIN 1位 | 发送方结束向对方发送数据 窗口大小 16位 | 流量控制,限制了窗口大小为65535字节,限制的TCP的吞吐性能 TCP校验和 16位 | 由发送方计算保存,由接收方验证 紧急指针 16位 | 只有在URG字段启用时才生效 选项 ... 10、TCP半关闭 因为TCP连接通信的双向的,当有一方已经将数据发送完毕,但它仍然期望接收对方发来的数据时,应用程序就可以 调用shutdown()函数来达到半关闭的操作。 11、TCP状态 (有限状态机) CLOSED 没有任何连接状态  LISTEN 侦听状态,等待来自远方TCP 端口的连接请求  SYN-SENT 在发送连接请求后,等待对方确认  SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认  ESTABLISHED 代表传输连接建立,双方进入数据传送状态  FIN-WAIT-1 主动关闭, 主机已发送关闭连接请求,等待对方确认  FIN-WAIT-2 主动关闭, 主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求  TIME-WAIT 完成双向传输连接关闭,等待所有分组消失  CLOSE-WAIT 被动关闭, 收到对方发来的关闭连接请求,并已确认  LAST-ACK 被动关闭, 等待最后一个关闭传输连接确认,并等待所有分组消失  CLOSING 双方同时尝试关闭传输连接,等待对方确认 12、TCP超时与重传 TCP协议有两种机制确保数据的正确性:基于时间;基于确认信息。 1、计数器 在发出数据时,TCP会设置一个计时器,如果在计时器超时仍未收到数据接收的确认信息,则会引发重传机制。 计时器超时称为:重传超时(RTO) 2、确认信息 当发现确认信息出现错误,无法返回新的ACK时,则会引发重传。 13、拥塞控制 (拥塞是造成丢包的主要原因) 1、拥塞检测:是否有丢包发生 2、慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fast retransmit)、快速恢复(fast recovery)。 14、TCP协议特性 工作在传输层面向连接协议 全双工协议 半关闭 错误检查 将数据打包成段、排序 确认机制 数据恢复、重传 流量窗口,滑动窗口 拥塞控制、慢启动和拥塞避免算法 2、UDP协议 用户数据包协议(User Datagram Protocol),工作在传输层。 1、介绍 UDP协议只提供差错检测和校验和功能。非面向连接的协议。 2、UDP包头 16位 source port # 源端口 16位 destination port # 目标端口 16位 UDP length # 长度 16位 UDP checksum # 校验和 3、特性 工作于传输层 不可靠连接 非面向连接协议 有限的错误检查 传输性能高 无数据恢复特性 3、ICMP协议 Internet Control Message Protocol 控制消息协议 [工作于网络层] 基于IP协议之上;Type 8(request),Type 0(replay); 4、ARP协议 Address Resolution 地址解析协议 [工作于网络层] 与IP协议在同一个层次级别的协议 广播的形式请求,单播的形式响应。 5、RARP协议 Resolution Address Resolution Protocol 反向地址解析协议 6、IP协议协议 1、网络协议(Internet Protocol),是用于分组交换网络的一种面向数据的协议。 独立处理数据包 分层编制--->IP地址 尽力而为传输 无数据恢复功能 2、报文头部 版本 4位 占4 位,指IP 协议的版本目前的IP协议版本号为4  首部长度 4位 可表示的最大数值是15个单位,一个单位为4字节,因此IP的首部长度的最大值是60字节  区分服务 8位 用来获得更好的服务, 在旧标准中叫做服务类型,但实际上一直未被使用过. 后改名为区分服务. 只有在使用区分服务(DiffServ) 时, 这个字段才起作用. 一般的情况下都不使用  总长度 16位 指首部和数据之和的长度, 单位为字节, 因此数据报的为最大长度为 65535 字节.元 总长度必 须不超过最大传送单元 MTU  标识 16位 它是一个计数器, 通常,每发送一个报文,值会加1,也用于数据包分片,在同一个包的若干分片 中,该值是相同的  标志(flag) 3位 目前只有后两位有意义 DF Don't Fragment当,中间的一位,只有当 DF=0时才允许分片 MF More Fragment,最高位,MF=1 表示后面还有分片。MF=0表示最后一个分片  片偏移 12位 指较长的分组在分片后,该分片在原分组中的相对位置. 片偏移[以8个字节]为偏移单位  生存时间 8位 记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一 个8bit字段,推荐的初始值由分配数字RFC指定, 当前值为64 发送 ICMP 把回显应答时经常把TTL值设为 最大值255  协议 8位 指出此数据报携带的数据使用何种协议以便目的主机的IP 层将数据部分上交给哪个处理过程, 1为表示为 ICMP协议, 2为表示为IGMP协议, 6为表示为TCP协议, 17表示为UDP协议。上层协议  首部检验和 16位 只检验数据报的首部不检验数据部分,这里不采用 CRC 检验码而采用简单的计算方法源地址和目的地址 : 都各占4 字节, 分别记录源地址和目的地址 源地址 32位 目标地址 32位 可选字段 填充 数据部分 7、DHCP协议 DHCP(Dynamic Host Configuration Protocol,DHCP)动态主机设置协议。是一个局域网的网络协议,使用UDP协议工作。