TCP的窗口机制
为什么要提出窗口机制
以A和B通信为例, 正常情况下,A每发送1句话,B就对其进行确认确认(通过回复ACK确认,ACK的序列号=收到的seq+1来确认);不过这样传输效率低下,因此引入了窗口机制
窗口机制的原理
A发送多句话,B通过一句确认回复(通过回复ACK确认,ACK的序列号=收到的最后一句话的seq+1);并且A会根据B回复的确认报文来了解到B的窗口大小
窗口大小如何协商
1、当A发送3句话,但是如果B的窗口大小只有2句话时,则第三句话会被丢弃;
2、此时B给A回复的ACK为A的第二句的序列号+1,并且将自己窗口大小为2告诉A
3、当A收到后就知道第三句话没有被B接收,并且知道了接收端的窗口大小,此时A向B发送时会控制窗口大小,即此时发送第三句和第四句话给B
UDP无面向连接服务无面向连接服务——在通信前要不需要建立会话连接,直接开始传输数据,不可靠
报文格式
源端口 Source port
标识哪个应用程序发送的
目标端口 Destination Port
标识哪个应用程序接收的
长度 Length
UDP头部+UDP数据的字节数,最小为8字节
检验和 Checksum
对头部和内容进行校验
网络层协议——传输数据包
提供逻辑地址,通过寻址来选择合适的路由和交换节点,实现数据从源到目的地的转发
网络层协议主要是IP协议,除了IP协议还有GRE、ICMP、IGMP、OSPF等协议
IP协议主要分为IPv4协议和IPv6协议,此处只讨论IPv4协议
报文格式 固定头部20字节,可变头部40字节(总共20~60字节)
IP报文最大长度为1500字节(头部+数据)
Version 版本
IP协议的版本,目前的IP协议版本号为4,下一代IP协议版本号为6
Header Length 头部长度
固定部分的长度(20字节)和可变部分的长度之和
通过0000~1111来标识
即0001=1,则其就代表报文头部为4个字节
IP固定头部20个字节,其报文长度也就是0101(5)
DS Field 区分服务字段
用于QoS
Total Length 总长度
IP报文的总长度。报头的长度和数据部分的长度之和。
总长度最大为MTU的值,缺省为1500
Identification 标识——分片使用
该字段标记当前分片为第几个分片,在数据报重组时很有用(让其按照顺序重组)
Flags 分段标志——分片使用
该字段用于标记该报文是否为分片(有一些可能不需要分片,或不希望分片)
后面是否还有分片(是否是最后一个分片)。
该字段共3位。R、DF、MF三位。目前只有后两位有效
R——保留位必须为0
DF——报文是否分片,为1表示不分片,为0表示分片。
MF——报文是否是最后一个分片,为1表示“更多的片”,为0表示这是最后一片。
例如:0x00---000 代表分片,最后一片
0x40---010 代表不分片,最后一片
0x20---001 代表不分片,还有更多的片
Fragment Flags 分段偏移——分片使用
指当前分片在原数据报(分片前的数据报)中相对于用户数据字段的偏移量,即在原数据报中的相对位置,为 0 代表是第一个包
TTL 存活时间
IP报文所允许通过的三层设备的最大数量,最大为255
每经过一个三层设备,TTL减1,当为0时,路由器将该数据报丢弃。
丢弃报文时向报文中的源IP地址发送ICMP错误消息(TTL Exceeded包)类型为 11 0。
Protocol 协议
该值标识网络层的上层协议,可以是其它网络层协议,也可以是传输层协议
Header Checksum 校验和
计算IP头部的校验和,检查IP报头的完整性
Source Address源地址
Destination Address 目的地址
Options 可选字段(0~40字节)
数据链路层——传输数据帧
将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测
数据链路层定义了两个子层
LLC 逻辑链路控制
负责识别网络层的协议类型,对网络层的数据进行封装并向下层传递
MAC 介质访问控制
负责控制物理层设备,也就是MAC地址,大小为48位二进制(12位十六进制)
代表一个网络接口的物理地址,全球唯一
24供应商代码(组织唯一标识符OUI,由IEEE分配和管理)+24厂商自己分配
第八位为0是单播,为1是组播
数据链路层主要协议
1、PPP(点对点链路)
2、Ethernet(以太网链路)
3、FR(帧中继链路)
4、HDLC(高级数据链路控制)
5、ATM(异步传输模式)
以太网链路(本次主要介绍以太网帧)
运行在MAC层之上
在以太网链路上传输的数据包成为以太帧
以太网帧(MAC帧)的两种标准帧格式
Ethernet_Ⅱ、IEEE802.3
IEEE802.3是Ethernet的前生,目前基本未使用(STP目前使用的是IEEE802.3帧格式)
Ethernet帧格式帧大小为64~1518,NTU最大传输单元默认为1500
Type类型值大于等于1536即(0x0600)
DMAC
目的MAC地址 6字节
SMAC
源MAC地址 6字节
Type
标识上层协议类型 2字节
IEEE802.3帧格式帧长度字段值小于1500(0x05DC),MTU为1492
DMAC
目的MAC地址 6字节
SMAC
源MAC地址 6字节
Length
定义了Data字段包含的字节数,不包过CRC检验码
DSAP
目的服务访问点,此处表示后面类型为STP帧
当为0x06,表示后面类型为IP帧
SSAP
源服务访问点,此处表示后面类型为STP帧
当为0x06,表示后面类型为IP帧
Control 字段
通常为0x03,标识无连接服务的IEEE802.2无编码数据格式
OUI
组织唯一标识符,通常为MAC地址的前3字节
Type
标识以太网帧所携带的上层数据类型
ISIS包
STP包