万字笔记快速复习计算机网络(图文)

tech2022-10-31  108

文章目录

层次结构设计的基本原则OSI七层模型TCP/IP四层模型计算机网络的性能指标速率时延RTT 物理层概述物理层的作用信道的基本概念分用-复用技术 数据链路层概述封装成帧透明传输差错检测奇偶校验码循环冗余校验码CRC 最大传输单元MTUMTU路径MTU 以太网协议详解Mac地址以太网协议数据格式传输过程 网络层概述IP协议讲解虚拟互连网络IP协议IP协议的格式 路由表简介IP协议的转发流程ARP协议与RARP协议IP地址的子网划分分类的IP地址特殊的主机号特殊的网络号 划分子网子网掩码 无分类编址CIDR斜线记法 网络地址转换NAT技术总结 ICIP协议差错报告报文询问报文 ICMP协议的应用ping应用Traceroute应用 网络层路由概述路由算法的本质自治系统 内部网关路由协议之RIP协议距离矢量(DV)算法如何运作 RIP协议的过程过程优点缺点 Dijkstra (迪杰斯特拉)算法最短路径问题 内部网关路由协议之OSPF协议链路状态(LS) 协议OSPF协议的过程OSPF五种消息类型 对比RIP协议 外部网关路由协议之BGP协议使用BGP的原因BGP发言人 传输层概述UDP协议详解特点 TCP协议详解特点 可靠传输的基本原理停止等待协议总结 连续ARQ协议 TCP协议的可靠传输TCP协议的流量控制坚持定时器 TCP协议的拥塞控制对比流量控制慢启动算法拥塞避免算法 TCP连接到建立TCP三次握手 TCP连接的释放TCP四次挥手等待计时器 套接字与套接字编程 应用层概述DNS详解DHCP协议DHCP的过程 HTTP协议详解格式Web服务器请求服务器过程 HTTPS协议详解加密模型对称加密非对称加密 数字证书SSL过程SSL参数握手

层次结构设计的基本原则

各层之间是相互独立的每一层要有足够的灵活性各层之间完全解耦

OSI七层模型

自上而下分别是

应用层 ==> 为计算机用户提供接口和服务表示层 ==> 数据处理(编码解码、加密解密等)会话层 ==> 管理(建立、维护、重连)通信会话传输层 ==> 管理端到端的通信连接网络层 ==> 数据路由(决定数据在网络的路径)数据链路层 ==> 管理相邻节点之间的数据通信物理层 ==> 数据通信的光电物理特性

OSI欲成为全球计算机都遵循的标准

OSI在市场化过程中困难重重,TCP/IP在全球范围成功运行

OSI最终并没有成为广为使用的标准模型

OSI失败的原因:

OSI的专家缺乏实际经验OSI标准制定周期过长,按OSI标准生产的设备无法及时进入市场OSI模型设计的并不合理,一 些功能在多层中重复出现

所以最后采用了TCP/IP四层模型

TCP/IP四层模型

TCP/IP四层模型分别对应OSI七成模型中的

应用层 ==> HTTP/FTP 应用层表示层会话层 传输层 ==> TCP/UDP 传输层 网络层 ==> IP/ICMP 网络层 网络接口层 ==> Ethernet/ARP/RARP 数据链路层物理层

计算机网络的性能指标

速率

常用单位Mbps bps=b/s=bit/s=1/8Btyes/s = 1/8B/s

时延

发送时延

发送时延 = 数据长度(bit)/发送速率(bit/s)

发送速率受限于计算机网卡

传播时延

传播时延 = 传输路径距离/传播速率(bit/s)

传播速率受限于传输介质(铜线or光纤…)

排队时延

数据包在网络设备中等待被处理的时间

处理时延

数据包到达设备或者目的机器被处理所需要的时间

总时延=发送时延+排队时延+传播时延+处理时延

RTT

RTT(Route-Trip Time)是评估网络质量的一项重要指标

RTT表示的是数据报文在端到端通信中的来回一次的时间

通常使用ping命令查看RTT

物理层概述

物理层的作用

连接不同的物理设备 双绞线 无屏蔽双绞线屏蔽双绞线 同轴电缆光纤 传输比特流

信道的基本概念

信道是往一个方向传送信息的媒体一条通信电路包含一个接收信道和一个发送信道

发送和接收会不会冲突?冲突了怎么办?

物理层帮助我们解决了这一个问题,使用全双工通信信道

单工通信信道 只能一个方向通信,没有反方向反馈的信道(有线电视、无线电收音机等等) 半双工通信信道 双方都可以发送和接收信息不能双方同时发送,也不能同时接收 全双工通信信道 双方都可以同时发送和接收信息

分用-复用技术

作用:提高信道的利用率

频分复用时分复用波分复用码分复用

数据链路层概述

封装成帧

如果说比特位是物理层的基本单位,那么“帧”是数据链路层数据的基本单位发送端在网络层(上一层)的一段数据前后添加特定标记形成”帧“ 帧首部(SOH: 00000001)和尾部(EOT: 00000100)是特定的控制字符(特定比特流) 接收端根据前后特定标记识别出“帧“

数据里面恰好有这些比特流咋办?

使用透明传输

透明传输

即是控制字符在帧数据中,但是要当做不存在的去处理

再往物理层传输的时候,会先判断“帧”的数据,如果其中含有EOT字符(00000100),则会在EOT字符前面加上转义字符,到时候传输过去的时候,如果检查到有EOT字符,就会先判断前面是否有转义字符,从而判断是否是帧尾部

如果链路层对这种情况没有特殊处理,那么就可以理解链路层为非透明传输(因为无法传输EOT这个字符),但是数据链路层通过对这个字符添加转义符(如果网络层数据中还存在转义符,就再添加一个转义符)的办法来使数据部分可以传输EOT字符,就实现了透明传输

差错检测

物理层只管传输比特流,无法控制是否出错数据链路层负责起“差错监测”的工作

奇偶校验码

00110010 ==> 0+0+1+1+0+0+1+0=3 ==> 奇数 在比特流后面添加1 ==> 001100101

00111010 ==> 0+0+1+1+1+0+1+0=4 ==> 偶数 在比特流后面添加0 ==> 001100100

假设我们现在需要传输00110010 1

如果在传输过程中出错,变成了00010010 1

我们就可以通过0+0+0+1+0+0+1+0=2,发现最后一位应该是0 但是传过来的结尾却是1,于是可知传输出错

但是会出现一个问题

如果出错两位,奇偶校验码校测不到错误

循环冗余校验码CRC

一种根据传输或保存的数据而产生固定位数校验码的方法检测数据传输或者保存后可能出现的错误生成的数字计算出来并且附加到数据后面

例题:使用CRC计算101001的可校验位串

1.G(x)=x3+x2+1 ==> 二进制位串:1101,最高阶:3

2.根据最高阶为r 所以给101001末尾添加r个0,这里r为3 ===> 101001000

3.将添加r个0后的数据101001000使用模2除法除以多项式的位串 也就是101001000/1101 得到商为110101 余数001

4.得到的余数填充在原数据r个0的位置得到可校验的位串 101001000 ==> 101001001

接收端接收的数据除以G(x)的位串,根据余数判断出错(余数为0则没有出错)

注意

CRC的错误检测能力与位串的阶数r有关数据链路层只进行数据的检测,不进行纠正CRC中的G(x)并不是随便取的,而是有一定的规定的

最大传输单元MTU

MTU

最大传输单元MTU(Maximum Transmission Unit)数据链路层的数据帧也不是无限大的数据帧过大或过小都会影响传输的效率以太网MTU一般为1500字节

路径MTU

路径MTU由链路中MTU的最小值决定

以太网协议详解

Mac地址

MAC地址(物理地址、硬件地址)每一个设备都拥有唯一的MAC地址MAC地址共48位,使用十六进制表示(比如:30-B4-9E-ED-85-CA)

以太网协议

以太网(Ethernet)是一种使用广泛的局域网技术以太网是一种应用于数据链路层的协议使用以太网可以完成相邻设备的数据帧传输,如果非相邻设备,需要网络层的协助
数据格式

整个称作数据帧

目的地址源地址类型帧数据CRC6字节6字节2字节46~1500字节4字节
传输过程

如果E在MAC地址表没有找到对应的接口,则会广播A的数据包到除A以外的端口,最终E将收到来自B、C的回应,并将地址记录

网络层概述

IP协议讲解

虚拟互连网络

实际的计算机网络是错综复杂的物理设备通过使用IP协议,屏蔽了物理网络之间的差异

IP协议

IP协议使得复杂的实际网络变为一个虚拟互连的网络IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发IP协议解决了在虚拟网络中数据报传输路径的问题

IP协议的格式

版本

占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6

首部位长度

占4位,最大数值为15,表示的是IP首部长度,单位是“32位字” (4个字节)也即是IP首部最大长度为60字节

总长度

占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据)

TTL

占8位,表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文,避免数据在网络中无限传输

协议

占8位,表明IP数据所携带的具体数据是什么协议的(如: TCP. UDP等)

协议名ICMPIGMPIPTCPUDPOSPF…字段值12461789…

首部校验和

占16位, 校验IP首部是否有出错

路由表简介

计算机或者路由器都拥有路由表

路由表结构

目的IP地址下一跳IP地址IP1IP4IP2IP5IP3IP6……

IP协议的转发流程

如果只看网络层,那么流程如下

如果结合网络层和数据链路层,那么流程如下

第一步

A发出目的地为C的IP数据报,查询路由表发现下一跳为EA将IP数据报交给数据链路层,并告知目的MAC地址是E数据链路层填充源MAC地址A和目的MAC地址E数据链路层通过物理层将数据发送给E

第二步

E的数据链路层接收到数据帧,把帧数据交给网络层E查询路由表,发现下一跳为FE把数据报交给数据链路层,并告知目的MAC地址为FE的数据链路层封装数据帧并发送

第三步

F的数据链路层接收到数据帧,把帧数据交给网络层F查询路由表,发现下一-跳为CF把数据报交给数据链路层,并告知目的MAC地址为CF的数据链路层封装数据帧并发送

MAC地址和IP地址在传输过程中的差别

数据帧每一跳的MAC地址都在变化IP数据报每一跳的IP地址始终不变

ARP协议与RARP协议

ARP(Address Resolution Protocol)地址解析协议

将网络层32位IP地址转化为数据链路层MAC48位地址

ARP缓存表(存着IP地址与MAC地址的映射关系) ARP缓存表缓存有IP地址和MAC地址的映射关系ARP缓存表没有缓存IP地址和MAC地址的映射关系 ARP协议会通过广播 获取目的主机的MAC地址与IP地址

ARP缓存表可以通过终端arp -a查看

RARP(Reverse Address Resolution Protocol)逆地址解析协议

将数据链路层MAC48位地址转化为网络层32位IP地址

总结

®ARP协议是TCP/IP协议栈里面基础的协议

ARP和RARP的操作对程序员是透明的

理解®ARP协议有助于理解网络分层的细节

IP地址的子网划分

分类的IP地址

特殊的主机号
主机号全0表示当前网络段,不可分配为特定主机主机号为全1表示广播地址,向当前网络段所有主机发消息(意思是如果往主机号全为1的发送消息,则会向当前网络段所有主机发消息)
特殊的网络号
A类地址网络段全0(00000000)表示特殊网络A类地址网络段后7位全1(01111111:127)表示回环地址B类地址网络段(10000000.00000000:128.0)是不可使用的C类地址网络段(192.0.0)是不可使用的

所以正确的子网和主机数量应该基于上表,每一类各减一些(如下表)

127.0.0.1,通常被称为本地回环地址(Loopback Address),不属于任何-一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。

划分子网

某公司拥有256名员工,每人配备一个计算机,请问该公司应该申请哪种网络段?

解:因为申请A类地址只能有254台主机连接达不到要求,但是如果申请B类地址,虽然能满足,但是造成了大量地址的浪费,所以有了子网划分的概念

比如下图的193.10.10.0 我们通过子网划分,分成了两段,我们取其中一段使用即可,比如当前有100名员工,在没有子网划分的时候,我们需要使用到C类地址,可连接254台主机,这样会造成资源的极度浪费,但是通过子网划分,我们现在能连接126台主机,但是仍然足够100名员工使用,于是我们从浪费154个地址降到了26个,减少了资源的浪费

如何每一类IP地址都进行子网划分的话,将会出现非常多的子网号,所以有了子网掩码帮助我们快速判断某个IP的网络号

子网掩码
子网掩码和IP地址一样,都是32位子网掩码由连续的1和连续的0组成某一个子网的子网掩码具备网络号位数个连续的1

A类地址的子网掩码255.0.0.0

B类地址的子网掩码255.255.0.0

C类地址的子网掩码255.255.255.0

假设有这么一个ip地址193.10.10.6,子网掩码为255.255.255.128,求子网号

193.10.10.6 ==> 11000001.00001010.00001010.00000110

255.255.255.128 ==> 11111111.11111111.11111111.10000000

相与得到子网号 ==> 11000001.00001010.00001010.00000000 ==> 193.10.10.0

无分类编址CIDR

现代ip地址的归类方法CIDR中没有A、B、C类网络号、和子网划分的概念CIDR将网络前缀相同的IP地址称为一个"CIDR地址块” 网络前缀是任意位数的

斜线记法

193.10.10.129/25 表示前25位为网络前缀

相比原来子网划分更加灵活

网络地址转换NAT技术

NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中

NAT (Network Address Translation)技术是如何出现的?首先是IP地址不够用

IPv4最多只有40+亿个P地址早期IP地址的不合理规划导致IP号浪费

所以将IP地址分为两类,增加IP地址的利用率

内网地址

内部机构使用(手机,笔记本等等)

避免与外网地址重复

三类内网地址

10.0.0.0~10.255.255.255(支持千万数量级设备)

172.16.0.0~172.31.255.255(支持百万数量级设备)

192.168.0.0~192.168.255.255(支持万数量级设备)

内网多个设备使用同一个外网IP请求外网的服务,外部怎么知道具体是哪个设备在请求的?

这里就需要使用到我们的NAT技术

NAT技术能在本地路由器中将内网的地址以及端口号转化为新的地址以及端口号(也就是外网的IP:新的端口号),当数据传回来的时候,也是通过NAT表取查找映射关系,从而传回具体的主机

NAT表

外网地址

全球范围使用全球公网唯一

总结

NAT减缓了IP地址的消耗,但是增加了网络通信的复杂度

ICIP协议

网际控制报文协议(Internet Control Message Protocol)

用于

ICMP协议可以帮助IP协议进行传输,可以报告错误信息或者异常情况

ICMP协议是封装在IP协议里面进行传输的,ICMP报文只是IP数据报的一组数据

在IP协议中 其中有八位用来表示协议,如果IP协议传输的是ICMP数据的话,协议的值就为1

差错报告报文

询问报文

ICMP协议的应用

ping应用

Ping回环地址127.0.0.1Ping网关地址Ping远端地址

Traceroute应用

Traceroute可以探测IP数据报在网络中走过的路径

在终端通过tracert ip地址/网址,可以查看到请求发送到目的主机走过的路径

其原理是通过TTL与ICMP协议的配合来完成的

初始TTL为1,如果下一跳不是目的主机,则返回终点不可达的报文到源主机,然后TTL+1,继续发送,重复操作,一直到TTL足够到达目的主机,从而实现记录IP数据报在网络中走过的路径

网络层路由概述

路由算法的本质

本质上是一张“图”,我们在图上运行这个算法,而路由表只是这个算法里面的一个数据结构

每一顶点表示一个网络、 路由器或计算机每一条边表示一条网络路径网络环境复杂 路由算法要比图论的算法要复杂

自治系统

自治系统内部路由的协议称为:内部网关协议(RIP、OSPF)自治系统外部路由的协议称为:外部网关协议(BGP)

内部网关路由协议之RIP协议

距离矢量(DV)算法

每一个节点使用两个向量Di和SiDi描述的是当前节点到别的节点的距离 比如Di1表示从节点i到节点1的距离 Si描述的是当前节点到别的节点的下一节点 比如Si1表示从节点到节点1的下一个节点

dij = min(dix+dxj) //x为i到j需要经过的中间的某个节点

如何运作
每一个节点与相邻的节点交换向量Di和Si的信息每一个节点根据交换的信息更新自己的节点信息

RIP协议的过程

RIP(Routing Information Protocol)协议

RIP协议是使用DV算法的一种路由协议

RIP协议把网络的跳数(hop)作为DV算法的距离RIP协议每隔30s交换一次路由信息RIP协议认为跳数>15的路由则为不可达路由
过程

1.路由器初始化路由信息(两个向量Di和Si)

2.对相邻路由器X发过来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)

​ i.检索本地路由,将信息中新的路由插入到路由表里面 ​ ii.检索本地路由,对于下一跳为X的,更新为修改后的信息(以最新的为准) ​ iii.检索本地路由,对比相同目的的距离,如果新信息的距离更小,则更新本地路由表

3.如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(16跳)

优点

实现简单,开销很小

缺点

故障信息传递慢

假设ABC为一组线性网络,某一个时刻A断开,B想传递A,发现传递不了,然后发现C可以传递给A,于是把路径长度+1,并且下一跳设置为C,C准备传递给A时,也发现传递不了,然后发现B可以传递给A,于是把路径长度+1,并且设置下一跳为B,如此反复,经过16次后,才设置为不可达,所以故障信息传递得慢

限制了网络的规模

跳数>15的路由不管可不可达,在RIP协议中始终认为不可达,所以限制了网络的规模

Dijkstra (迪杰斯特拉)算法

Dijkstra算法是著名的图算法Dijkstra算法解决有权图从一个节点到其他节点的最短路径问题"以起始点为中心,向外层层扩展’

最短路径问题

1.初始化两个集合(S, U) (S为只有初始顶点点A的集合,U为其他顶点集合)

2.如果U不为空,对U集合顶点进行距离的排序,并取出距离A最近的一个顶点D

​ i.将顶点D的纳入S集合

​ ii.更新通过顶点D到达U集合所有点的距离(如果距离更小则更新,否则不更新)

​ iii.重复2步骤

3.直到U集合为空,算法完成

内部网关路由协议之OSPF协议

链路状态(LS) 协议

向所有的路由器发送消息

一传十十传百,而RIP协议只跟相邻的路由器交换信息

消息描述该路由器与相邻路由器的链路状态

时延,带宽,距离等等,而RIP协议只描述跳数

只有链路状态发生变化时,才发送更新信息

而RIP协议每隔30s交换路由信息,不管状态有没有发生变化

OSPF协议的过程

OSPF(Open Shortest Path First:开放最短路径优先)

OSPF协议的核心是Dijkstra算法

OSPF协议是链路状态(LS)协议的一种实现,相当于LS定义了这种规则,而OSPF则实现了这种规则

向所有的路由器发送消息

获得网络中的所有信息 ==> "网络的完整拓扑”(所以每个路由器都能单独的运行Dijkstra算法)

也称为“链路状态数据库”"链路状态数据库”是全网一致的 消息描述该路由器与相邻路由器的链路状态

所以OSPF协议比RIP协议更加客观、更加先进

只有链路状态发生变化时,才发送更新信息

减少了数据的交换,更快收敛

OSPF五种消息类型
问候消息(Hello) 验证自己与隔壁路由器是否真正可达 链路状态数据库描述信息链路状态请求信息 向隔壁请求链路状态数据库 链路状态更新信息链路状态确认信息

OSPF协议过程图

对比RIP协议

RIP协议OSPF协议从邻居看网络整个网络的拓扑在路由器之间累加距离Dijkstra算法计算最短路径频繁、周期更新,收敛很慢状态变化更新,收敛很快路由间拷贝路由信息路由间传递链路状态,自行计算路径

外部网关路由协议之BGP协议

BGP(Border Gateway Protocol:边际网关协议)

BGP协议是运行在AS(自治系统)之间的一种协议

BGP协议能够找到一条到达目的比较好的路由

使用BGP的原因

互联网的规模很大AS内部使用不同的路由协议AS之间需要考虑除网络特性以外的一些因素(政治、安全…)

BGP发言人

BGP发言人就是一个路由器,位于AS边界的

BGP并不关心内部网络拓扑AS之间通过BGP发言人交流信息BGP Speaker可以人为配置策略 比如中国不想让一些敏感信息进入国内,就可以在BGP Speaker上人为配置策略

传输层概述

在传输层,我们可以忽略两个设备之间是如何连接的,因为网络层已经帮我们解决了这个问题,我们可以把两个设备之间的网络连接,当成是一个虚拟互联的网络,其实说白了,两个设备的通讯也可以当成是两个进程的通讯

计算机是如何识别是哪个进程在通讯的?

端口

使用端口(Port)来标记不同的网络进程端口(Port)使用16比特位表示(0~65535) FTPHTTPHTTPSDNSTELNET21804435323

UDP协议详解

UDP(User Datagram Protocol:用户数据报协议)

UDP是一个非常简单的协议

对于应用层传下来的数据,不会进行合并,也不会进行拆分,所以UDP协议的长度基本是由应用层的数据长度决定的

特点

UDP是无连接协议UDP不能保证可靠的交付数据 “想发就发”,"无法保证数据在网络中是否丢失” UDP是面向报文传输的UDP没有拥塞控制UDP的首部开销很小

TCP协议详解

TCP( Transmission Control Protocol:传输控制协议)

TCP协议是计算机网络中非常复杂的一个协议

特点

TCP是面向连接的协议

TCP的一个连接有两端(点对点通信)

TCP提供可靠的传输服务

TCP协议提供全双工的通信

TCP是面向字节流的协议

序号

范围0~2^32-1TCP是面向字节流的,每个字节都有唯一的一个序号而这里的序号只是数据首字节的序号

确认号

0~2^32-1一个字节一个序号期望收到数据的首字节序号

数据偏移

占4位:能表示0~15,单位为:32位字(4字节),也就是每一个偏移,就能表示4个字节的偏移数据偏离首部的距离(因为不知道TCP选项的长度)

TCP标记

占6位,每位各有不同意义

标记含义URGUrgent:紧急位,u=1,表示紧急数据ACKAcknowledgement:确认位,ACK=1,确认号才生效PSHPush:推送位,PSH=1,尽快地把数据交付给应用层RSTReset:重置位,Rst=1,重新建立连接SYNSynchronization:同步位,SYN=1表示连接请求报文FINFinish:终止位,Fn=1表示释放连接

窗口

占16位:0~2^16-1窗口指明允许对方发送的数据量

紧急指针

紧急数据(URG=1)指定紧急数据在报文的位置

TCP选项

最多40字节支持未来的拓展

可靠传输的基本原理

停止等待协议

发送的消息在路上丢失了确认的消息在路上丢失了确认的消息很久才到

通过超时重传保证可靠传输

每发送一个消息,都需要设置一个定时器

超时定时器

总结
停止等待协议是最简单的可靠传输协议停止等待协议对信道的利用效率不高

连续ARQ协议

ARQ( Automatic Repeat reQuest:自动重传请求)

既然单个发送和确认效率低,可不可以批量发送和确认?

于是有了连续ARQ协议

累计确认不需要像上面一样等待一个一个消息的确认,假设我现在收到第五条信息的确认,那么就认为,前面5条都已经收到,累计确认可以减少确认报文的数量,以此提升网络的效率

TCP协议的可靠传输

TCP的可靠传输基于连续ARQ协议TCP的滑动窗口以字节为单位

TCP协议的流量控制

流量控制指让发送方发送速率不要太快流量控制是使用滑动窗口来实现的

TCP协议中有窗口这么一个数据段

占16位: 0~2^16-1窗口指明允许对方发送的数据量

如果现在接收方准备告诉发送方窗口大小为1000,但是这个消息在发送的过程中不小心丢失了,发送方一直收到这个消息,就会造成死锁的局面(窗口大小信息没有超时重传机制),所以这里我们需要另一种定时器——坚持定时器

坚持定时器

当接收到窗口为0的消息,则启动坚持定时器坚持定时器每隔一段时间发送一 个窗口探测报文

TCP协议的拥塞控制

一条数据链路经过非常多的设备数据链路中各个部分都有可能成为网路传输的瓶颈

对比流量控制

流量控制考虑点对点的通信量的控制拥塞控制考虑整个网络,是全局性的考虑

慢启动算法

由小到大逐渐增加发送数据量每收到一个报文确认,就加一,一直到慢启动阈值(指数增长1, 2, 4, 8, 16)达到慢启动阈值后,启动另一种算法——拥塞避免算法

拥塞避免算法

维护一个拥塞窗口的变量只要网络不拥塞,就试探着拥塞窗口调大(…16, 17, 18, 19)

全过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eHOvlsL2-1599101827388)(/Users/huangwenxun/Library/Application Support/typora-user-images/image-20200901230629460.png)]

TCP连接到建立

TCP三次握手

为什么发送方要发出第三个确认报文呢?

避免已经失效的连接请求报文传送到对方,引起错误

如果有一个先发后到的确认报文,接收方会有第二次回应,这样就会建立两次连接,如果有三次握手,先到的确认报文已经进行了第三次握手,因为发送方对于第二次的消息会忽略掉,不会进行任何的操作

TCP连接的释放

TCP四次挥手

等待计时器

等待计时器会等待2MSL的时间【MSL(Max Segment Lifetime):最长报文段寿命】

MSL建议设置为2分钟

为什么需要等待2MSL?

最后一个报文没有确认确保发送方的ACK可以到达接收方2MSL时间内没有收到,则接收方会重发(也就是重复第三次挥手的动作)确保当前连接的所有报文都已经过期

套接字与套接字编程

IP:Port ==> 套接字

IP与端口的组合就叫套接字套接字(Socket)是抽象概念,表示TCP连接的一端通过套接字可以进行数据发送或接收一个IP可以有多个套接字

所以TCP的连接,我们就可以理解为是两个套接字的连接

TCP = { Socket1: Socket2 } = {{ IP:Port }:{ IP:Port }}

应用层概述

传输层以及以下的层提供完整的通信服务应用层是面向用户的一层 FTPHTTPHTTPSDNSTELNET21804435323

作用

定义应用间通信的规则

应用进程的报文类型(请求报文、应答报文)报文的语法、格式应用进程发送数据的时机、规则

DNS详解

DNS (Domain Name System:域名系统)

使用域名帮助记忆域名由点、字母和数字组成点分割不同的域域名可以分为顶级域、二级域、三级域…n级域 比如www.taobao.com com为顶级域taobao为二级域www为三级域

解析域名过程

DHCP协议

DHCP(Dynamic Host Configuration Protocol: 动态主机设置协议)

DHCP是一个局域网协议DHCP是应用UDP协议的应用层协议即插即用联网

DHCP会自动分配内网的IP地址给你,而不需要手动配置

在DHCP有两个点需要注意

分配的IP是临时的租期的概念

DHCP的过程

DHCP服务器监听默认端口: 67主机使用UDP协议广播(先将自己的IP地址全填写为1)DHCP发现报文DHCP服务器发出DHCP提供报文(告诉主机我可以提供DHCP服务)主机向DHCP服务器发出DHCP请求报文DHCP服务器回应并提供IP地址

HTTP协议详解

HTTP(HyperText Transfer Protocol:超文本传输协议)

HTTP协议是可靠的数据传输协议(基于TCP)工作在CS的架构之上

格式

http(s)😕/<主机>:<端口>/<路径>

Web服务器

硬件部分软件部分
请求服务器过程

请求 GET 获取指定的服务端资源 POST 提交数据到服务端 DELETE 删除指定的服务端资源 UPDATE 更新指定的服务端资源 PUTOPTIONSPATCHHEADTRACE 请求/应答报文格式

怎么指定资源呢?

在url地址中指定

在请求数据中指定

POST https://coding.imooc.com HTTP/1.1 Accept-Encoding: gzip Accept-Language: zh-CN { "sort":0, "unlearn":0, "page":2 } 请求状态码 状态码含义200~299成功状态码300~399重定向状态码400~499客户端错误状态码500~599服务端错误状态码

HTTPS协议详解

HTTP是明文传输的,对于敏感信息,HTTP是不安全的HTTPS( Secure)是安全的HTTP协议http(s): //<主机><端口><路径> 端口变为443

加密模型

对称加密

非对称加密

A、B是拥有一定数学关系的一组秘钥 私钥 私钥自己使用,不对外公开公钥 公钥给大家使用,对外公开 发送数据使用公钥进行加密,拿到密文后使用私钥进行解密

数字证书

数字证书是可信任组织颁发给特定对象的认证

SSL

SSL (Secure Sockets Layer:安全套接层)

数据安全和数据完整对传输层数据进行加密后传输

过程

SSL参数握手

综合使用对称加密、非对称加密(生成随机数阶段)

最新回复(0)