零、概述
- OSI参考模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
- TCP/IP模型:物理层、网络接口层,互联网络层,传输层,应用层
一、物理层
- 以电压的高低和灯光的闪灭代表0和1,规定连接器和网线的规格
- 集线器:工作于物理层和数据链路层的介质访问控制(MAC)子层;共享介质;采用广播方式发送;冲突检测,载波监听,多路访问。
二、数据链路层
- 作用:互连设备之间传送和识别数据帧
- 相关技术:MAC地址,共享介质型网络,非共享介质型网络,根据MAC地址转发,环路检测技术,VLAN
- 以太网是众多数据链路中最著名、最广泛的一种
- 以太网交换机:(相当于持有多个端口的网桥)根据数据链路层中每个 帧的目的MAC地址,决定从哪个网络接口发送数据;所参考的、用以 记录发送接口的表叫作转发表(自动生成)。
- 帧格式:(8字节前导码)+6字节 目的MAC+源MAC+2字节 上层协议类型+46~1500字节 数据+4字节 FCS 帧检验序列
- 其余数据链路:无线通信、PPP。。。
三、网络层
作用:在数据链路层提供的两个相邻端点之间的数据帧传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务→ 地址管理和路由选择
-
IP协议(internet protocol 网际协议)
- 是一种无连接、不可靠的IP分组的交付服务,
- IP地址
-
分类:A类 0开头;B类 10开头;C类110 开头; D类 1110开头,多播地址;E类 11110 开头,保留为今后使用
- 网络号字段 + 主机号字段
- 子网编址→使得多个物理网络可以共用一个网络前缀→IP = 【网络号, 子网号,主机号】→子网掩码,网络号和子网号部分全1→广播地址,主机号部分全1
- 无分类编址CIDR,其网络前缀等同于子网划分中的网络号和子网号
-
- IP数据报格式
- 首部(20字节)+数据部分
- 版本0.5+首部长度0.5+服务类型1+总长度2+标识2+标志,片偏移2+生存时间1+协议1+首部校验和2+源地址4+目的地址4
- 生存时间TTL,单位是跳,标识IP数据报在网络中剩余的寿命;协议字段指出应将数据部分交给哪一个进程,ICMP IGMP TCP UDP OSPF;
-
只校验首部,而不校验数据部分
- IP数据报分片和重组
- 原因:不同网络MTU不同
- 路由器负责分片,目的主机负责重组
- 标识:源主机赋予数据报的唯一标识符;标志:标志是否允许分片以及是否是最后一个分片;片偏移,以8字节位单位
- 分片原则:分片个数越少越好,且是8字节的整数倍(最后一个分片不足8字节的部分补0)。
- 地址解析协议ARP
- 作用:为网络层IP地址和数据链路层MAC地址提供动态映射
- 使用广播方式获得物理地址
- 使用ARP高速缓存,具有20分钟生存周期
- ARP获得的是IP数据报传送到目的主机过程中下一跳上路由器的MAC地址
- 因特网控制报文协议ICMP
- 虚拟专用网
-
路由器
- 一个路由器至少应当有两个不同的IP地址
- 包括路由选择部分和分组转发部分
- 若路由器处理分组的速率赶不上分组进入队列的速率,则未处理的分组存入缓存→输入或者输出队列产生溢出是造成分组丢失的重要原因
- 转发原则
- 同一网络:直接交付,不使用路由器;间接交付,使用路由器,根据路由表转发。
- 路由表:(目的网络地址,子网掩码,下一跳路由器IP地址(如果是直接交付,则可以用横杠表示),接口)
- 特定主机路由:掩码255.255.255.255;默认路由:掩膜0.0.0.0
- 最长前最匹配
- 私有地址:只能用于专用互联网内部通信的IP地址空间:10/8、 172.16/12、 192.168/16
四、传输层
作用:管理两个网络节点之间的数据传输
-
端口:
- 作用
- 五元组:源IP,目的IP,协议号,源端口号,目的端口号,
- 端口号由其使用的传输层协议决定→不同的传输协议可以使用相同的端口号;如,TCP与UDP使用同一个端口号,但使用目的各不相同→数据到达IP层后,会先检查IP首部中的协议号,再传给相应协议的模块做端口号的处理。→知名端口号与协议无关
-
TCP:
面向连接的、可靠的流协议→用于有必要实现可靠传输的情况
是什么:TCP是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分组成适当长度的报文段(通常收改计算机连接的网络的数据链路层的MTU的限制),之后TCP把结果包传给IP层,有它来通过网络将包传送给接收端实体的TCP层。TCP层为了保证不丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。
-
报文格式:2源端口+2目的端口+4序号+4确认号+2 数据偏移、保留、偏置+2窗口+2校验和+2紧急指针
- 序列号:表示发端到收端发送的数据字节流,表示在这个报文段中的第一个数据字节在数据流中的序号
- 确认号:发送确认的一段所期望收到的下一个序号,因此确认序号应当是上次已成功收到的数据字节序号加1,不过只有当标志位ACK置1时,确认号字段才有效
- 偏移:首部中32bit字的数目→占4bit→首部最长4*15=60字节
- 标志位:URG,表明报文中包含紧急数据;ACK,确认号有效;PSH,数据报到达收端立即交给应用程序,而不是在缓冲区排队;SYN,同步号,建立连接用;FIN,发端已经达到数据末尾,数据传输完成。
- 窗口:滑动窗口,用于流量控制??
-
连接管理
- 三次握手:
- 发端发送连接请求报文段,SYN=1,ACK=0,seq=x;
- 收端收到SYN报文段,发送SYN+ACK报文段,SYN=1,ACK=1,seq=y,ack=x+1;
- 发端发送ACK报文段,SYN=0,ACK=1,ack=y+1
- 数据传输阶段:
- 发端:SYN=0,ACK=1,seq=x+1,ack=y+1
- 收端:SYN=0,ACK=1,ack=x+1
- 四次挥手:
- 主机1请求关闭,主机1向主机2发送FIN报文段,设置seq_1和ack_1,
- 主机2确认请求,主机2收到FIN报文段,发回一个ack报文段
ack_2=seq_1+1, - 主机2请求关闭,主机2想主机1发送FIN报文段,seq_2 = y,
-
主机1向主机2发送确认报文段,主机2收到主机1确认报文段后关闭连接;主机1等待2MSL(最大报文段生成时间)后没收到回复,则证明主机2已经正常关闭,主机1关闭连接。
- 三次握手:
-
为何进行三次握手,不是两次握手?
- 为了防止已失效的连接请求报文段突然又传送到了服务端→架设client发送的第一个请求连接报文段并没有丢失,而是在某个网络节点长时间滞留,连接释放后某个时间才到达server;server在收到此请求后,误认为是新请求,发回确认报文段,如果不是三次握手,此时连接已经建立,server会一直等待client发来数据,造成server资源的浪费。
-
为何进行四次挥手?
- TCP是全双工模式,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送,但是主机1还可以接受来自主机2的数据→主机2发回ACK报文表示已经知道主机1没数据发送;当主机2也发送FIN报文段,表示主机2也没数据发送,主机1才能关闭连接。
- 状态变化:FIN_WAIT_1→主动关闭连接,等待对方回应;FIN_WAIT_2,半连接状态;TIME_WAIT,收到对方的FIN报文,并发送出ACK报文,等待2MSL后即可进入关闭状态;CLOSE_WAIT,收到并确认对方关闭请求后,等待自己数据传送完毕;LAST_ACK,等待对方确认报文,一旦收到确认报文即可关闭
- TCP是全双工模式,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送,但是主机1还可以接受来自主机2的数据→主机2发回ACK报文表示已经知道主机1没数据发送;当主机2也发送FIN报文段,表示主机2也没数据发送,主机1才能关闭连接。
-
UDP:
- 不具有可靠性的数据包协议,细微的处理会交给上层的应用去完成→用于对高速传输和实时性有较高要求的通信或广播通信
- UDP是什么,UDP是用户数据报协议,它不提供复杂的控制机制,提供面向无连接的通信服务。
五、路由控制协议
- 外部网关协议EGP
- 边界网关协议 BGP
- 内部网关协议IGP
- 路由信息协议 RIP
- 开放式最短路径优先 OSPF
- 路由算法
- 距离向量算法:根据距离和方向决定目标网络或目的主机位置
- 优点:处理简单
- 缺点:只有距离和方向信息,当网络构造复杂时,获得稳定路由信息前需要消耗一定时间;容易发生路由循环;每个路由器持有信息不同,无法判断信息正确与否
- 链路状态算法:路由器在了解网络整体连接状态的基础上生成路由控制表
- 优点:所有路由器持有相同信息,便于检验;即使网络结构复杂,每个路由器也能保持正确信息
- 缺点:获取路由信息表需要高速CPU处理能力和大量内存。
- 距离向量算法:根据距离和方向决定目标网络或目的主机位置
- RIP
- 基于距离向量算法决定路径,距离的单位为 跳数