因为博主图床使用的是GitHub进行存储的,因此当出现图片无法加载,可以尝试更换网络,或者用其他上网方法。当时想用
Gitee进行存储,但一直失败,过一段时间再试几次。目前这篇博文会一直更新,补充新的内容。
计算机网络是指将多个计算机连接在一起,实现通信和信息共享的系统,它允许计算机之间可以相互通信并且进行信息传输。
广域网(WAN): 作用范围广,通常为几十到几千公里。
城域网(MAN): 作用范围一般为小城市,5~50Km。
局域网(LAN): 最常见的校园网和企业网。
个人区域网(PAN):
按照网络的使用者进行分类:
专用网
公用网
按照传输方式分类:
有线网
无线网
速率,带宽,吞吐量,时延,时延带宽积,往返时间RTT,利用率 等…
单工: 只能单方向传输。
半双工: 在同一时间内,只允许一个方向的数据通过。
全双工: 双方都可以进行数据通信。
单播: 就是所谓的一对一传输。
多播: 一对多传输。
广播: 多对多的传输。
电路交换: 从源头到终点的传输。
报文交换: 先将报文传输到邻接点,全部存储下来,再转发到下一个节点。
分组交换: 先将报文分成多个分组,再将分组传输到邻接节点,保存下来后在转发到下一节点。
语法: 数据与控制信息的结构或格式
语义: 发出何种控制信息,完成何种动作。
同步: 事件实现顺序的详细说明。
OSI 七层模型:
应用层: 通过应用进程的交互来完成网络应用。
表示层:
会话层: 创建,维护,管理,关闭会话。
传输层: 提供端到端的服务。具有流量控制和拥塞控制,提供数据传输服务。
网络层: 单位是分组。将帧组装成分组,进行Ip的寻址和路由选择。确保传输到目标主机。
数据链路层: 单位是帧。将比特流组装成帧,并且传送帧,同时进行差错检测和流量控制。
物理层: 单位是 比特。传输比特流,处理网络中的物理传输媒介。
应用层:
传输层:
网际层(网络层):
网络接口层:
传输数据的单位是 比特,任务就是透明的传输比特流。
导引型传输媒介:
双绞线: UTP(无屏蔽双绞线) 抗干扰能力差,价格便宜。
STP(屏蔽双绞线) 抗干扰能力强,价格贵。
同轴电缆:
光缆:
非导引型传输媒介: 无线电波,微波…
时分,码分,频分,波分。
同时间传输数量:
并行传输,串行传输
通信时双方的反应:
同步传输,异步传输
通过传输的信号类型:
基带传输,频带传输
传输方向:
单工,半双工,全双工
传输对象:
单播,多播,广播
其中: C为信道的极限信息传输速率
S/N为信噪比,常用的单位为db(分贝)
点对点信道: 使用一对一的点对点通信方式。
广播信道: 使用的一对多的广播通信方式。
PPP协议的特点:
PPP协议适合在线路质量不是太差的情况下。
多点接入(MA): 多个主机在一条主线上,竞争使用总线。
载波监听(CS): 发送数据前先检测总线(“先听后说”)
若总线空闲,则立即发送。
若总线忙,则持续检测总线直到总线空闲时立即发送。
碰撞检测(CD): 边发边检测碰撞(“边听边说”)
若检测到碰撞则立即停止发送,退避一段随机时间后再重新发送。
退避时间的算法(截断二进制指数退避算法):
退避时间 = 2ε × 随机数 随机数 0 ~ 2的k次幂-1,k为重传次数。
ε = 25.6微秒 2ε = 51.2微秒
封装成帧: 就是在数据的前后分别添加首部和尾部,这样就构成了一个帧。首部和尾部的一个重要作用就是帧定界。
一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。
透明传输: 当传送的帧是文本文件的帧,数据部分不会出现SOH,EOT这样的帧定界控制字符。这样的传输就是透明传输。
具体方法: 在出现控制字符的前面加上转义字符“ESC”,在接收端的数据链路层再把数据送到网络层之前删除这个插入的转义字符,这种方法被称为字符填充,字节填充。
在数据链路层仅仅是使用循环冗余检验CRC差错检测技术,只能做到对帧的无差错接收,不能提供可靠的传输。想要实现可靠传输需要加上确认,重传和序号功能。
网络层设计的尽可能简单,向上层只提供简单的,灵活的,无连接的,尽最大努力交付的数据报服务。 这里的数据报也被常称为**“分组”**。
虚电路服务和数据报服务
补充:
网络层的两个层面: 数据层面和控制层面
具体区别见下图:
IP地址是由32位的标识符组成的,通常采用点分十进制表示。
IP地址: < 网络号 > + < 主机号 > 因此当网络号为n时,主机号就为32-n。
补充: IP地址指明了连接在某一网络上的一个主机。
不连网的主机就没有IP地址
A类地址:类A地址是用于大型网络的地址范围,其高位比特为0。一个类A地址由一个网络部分和三个主机部分组成,可以支持最多16,777,214个主机。类A地址范围从1.0.0.0到126.0.0.0,其中1.0.0.0是网络地址,126.0.0.0是保留地址。
B类地址:类B地址用于中等规模的网络,其高位比特以10开头。一个类B地址由一个网络部分和两个主机部分组成,可以支持最多65,534个主机。类B地址范围从128.0.0.0到191.255.0.0,其中128.0.0.0是网络地址,191.255.0.0是保留地址。
C类地址:类C地址用于小型网络,其高位比特以110开头。一个类C地址由一个网络部分和一个主机部分组成,可以支持最多254个主机。类C地址范围从192.0.0.0到223.255.255.0,其中192.0.0.0是网络地址,223.255.255.0是保留地址。
注意: A B C类地址都是单播地址
D类地址:类D地址是用于多播(Multicast)的地址范围,其高位比特以1110开头。多播地址用于将数据包同时传输给一组特定的目标设备。类D地址范围从224.0.0.0到239.255.255.255。
E类地址:类E地址是保留地址范围,其高位比特以1111开头。这些地址保留供将来使用或特殊目的使用,不用于一般的网络通信。类E地址范围从240.0.0.0到255.255.255.255。
CIDR斜线记法: 斜线后面是网络前缀所占的位数。
例如: 128.14.35.7/20 表示的是二进制IP地址的前20位是网络前缀,剩下的12就是主机号。
最小地址: 将二进制IP地址的主机号全变为0
最大地址: 将二进制IP地址的主机号全变为1
地址掩码又称为掩码,是由一连串1和接着的1连串0组成,而1的个数就是网络前缀的长度。同时地址掩码也被称为子网掩码。
将二进制的IP地址和地址掩码进行按位AND运算 即可得出网络地址。
补充: AND运算只有1 AND 1 = 1,其余情况全为0。
MAC地址为物理地址,已经固化到网卡上了。
IP地址为逻辑地址,网络层及以上层使用的地址。
ARP地址解析协议是在主机的ARP高速缓存中存入一个从IP地址到MAC地址的映射表,并且这个映射表经常动态更新。
当主机A要向本局域网上的某台主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的MAC地址,再把这个MAC地址写入MAC帧,然后通过局域网把该MAC帧发往此MAC地址。
也有可能查不到主机B的IP地址。这可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A就自动运行ARP,然后按以下步骤找出主机其高速缓存还是空的.在这种情况下,主机A就自动运行ARP,然后按以下步骤找出主机。
其中标志在IP数据报分片的时候要用到 MF(More Fragment)。MF = 1即表示后面还有分片。MF = 0 表示这已经是若干数据报的最后一片。DF(Don‘t Fragment)。意思是不能分片 只有当DF = 0的时候才允许分片。
小技巧:MF位只有最后一个为0,其他全为1。
将目的网络和子网掩码进行AND运算,根据最长前缀匹配将结果去查找路由表,即可找到下一跳。
(2) 128.96.40.12
(3) 128.96.40.151
(4) 192.4.153.17
题解:
由于IPv4地址的耗尽,我国在2014年至2015年开始部署IPv6。
IPv6的主要变化:
终点不可达:当路由器或主机不能交付数据报就向源点发送终点不可达报文。
时间超时:当路由器收到生存时间为0的数据报时,除丢弃该数据报外,还要向源点发送时间超时报文。
参数问题:当路由器或目的主机收到数据报的首部中有字段不正确时就会丢弃该数据报,并向源点发送参数错误报文。
改变路由(重定向):路由器把改变路由的报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。
RIP是基于距离向量的路由选择协议,RIP允许一条路径最多可以包含15个网络,当距离等于16时,视为不可达。
OSPF是基于链路状态的路由选择协议,使用了迪杰斯特拉的SPF最短路径算法。
RIP与OSPF的区别:
题解:
其中的最小地址就是将主机号全部变为0,最大地址就是将主机号全部变为1。
解题:
注意题目上给的数据报长度是否包含头部的20字节。
片偏移字段 = 起始数据位/8 第一片数据报的起始数据位为0。
传输层主要是提供端到端的一个服务,并且向上层提供通信服务。
新概念 端口: 一个服务器有很多的端口,每个应用程序对应一个端口号。
传输层就围绕着两个协议展开: TCP UDP
TCP是TCP/IP体系中较为复杂的协议,是传输层最重要的协议。
TCP 连接的端点是套接字
TCP协议的特点:
TCP首部格式:
流量控制是指让发送方发送数据不要过快,要让接收方来得及接收。
拥塞控制是指防止过多的数据注入到网络中,这样就可以使网络中的路由器和链路不至于过载。
1.凡是已经发送的数据在未收到确认之前都必须保留,以便在后面超时重传中使用。
2.发送窗口大小往往是根据接收窗口大小而改变的。
3.发送窗口一定不能超过接收窗口。
4.窗口越大,发送方就可以在对方确认前连续发送多个数据,因而获得更高的传输效率。
5.发送窗口的后沿不可能向后移动,但有可能不移动:
- 没有收到新确认信息,对方的通知窗口大小也不变。
- 收到了新的确认但对方通知的窗口缩小了。
窗口内有3个指针 p1 p2 p3
p1之前的数据是已发送并收到确认的部分。
p2是允许发送但尚未发送的部分。
p3之后的数据是不允许发送的部分。
B接收窗口只能对按序收到的数据中的最高序号给出确认。
解读:
慢启动:就是在一定的时间内cwnd成指数增长的过程。
拥塞控制: 就是在一定的时间内cwnd成+1增长的过程和cwnd降为1的过程。
快恢复: cwnd降为1半,收到了3个重复的ACK报文。
拥塞控制超时: cwnd降为1。
UDP协议的特点:
UDP的首部格式:
建立连接:
文字讲解:
当客户端向服务端发起连接时,客户端会先向服务端放送1个SYN包,表示能否与它建立连接。如果服务端同意连接,会回复一个SYN+ACK包。客户端收到之后会回复一包ACK包,连接建立。总共发了3包数据,所以被称为三次握手。
问题一: 为什么不是两次握手而是三次握手?
答: 这是为了防止已经失效的请求报文,突然又传到服务端导致服务端错误。
断开连接:
文字讲解:
假设客户端发起连接关闭请求,客户端需要向服务端发送一包FIN包,表示要关闭连接,自己则进入终止等待1状态。服务端收到FIN包同时回复一包ACK包,表示自己进入了关闭等待状态,客户端则进入终止等待2状态。服务端此时还可以发送未发送的数据,而客户端还可以接收数据。最后服务端发送1包FIN包,进入最后确认状态。客户端收到之后回复1包ACK包,自己进入超时等待状态,过一段时间关闭连接。服务端收到ACK包后立即关闭连接。
问题一: 为什么客户端需要等待超时时间?
答: 因为假设客户端发送完ACK包后就直接释放连接。一旦ACK包在网络中丢失,就会一直停留在最后确认状态。
应用层是最接近于用户的一层。 为用户提供应用服务。
域名: 因特网使用的命名系统,用含有特定含义的主机名映射主机的IP地址。
例如: www.baidu.com ----> 百度的IP地址
DNS所作的事就是将域名解析成IP地址。
顶级域名: cn/us/uk;com/net/org/gov/int/aero
二级域名: ac/com/edu/gov/mil/net/org
三级域名: www/mail/ftp
四级域名: www/mail/ftp
根域名服务器: 并不负责解析,当域名传到根域名服务器,根域名服务器会查找这个域名的顶级域名并转发到对应的顶级域名服务器。
顶级域名服务器: 解析二级域名并进行分发。
权限域名服务器: 查找到对应的IP。
本地域名服务器: 当本地存储的有域名对应的IP,就回去查找对应的本地域名服务器,相当于一个高速缓存。
谁放在最后一个谁就是顶级域名;
提供不同系统之间的文件传输能力
以用户权限管理的方式提供用户对远程FTP服务器的文件管理能力。
请求资源的方式:
自行输入URL
点击超链接
共进行三步:
1.建立TCP连接
2.HTTP请求报文
3.HTTP响应报文
4.释放TCP连接
简单快速,灵活,无连接,无状态。
无连接:
限制每次连接只处理一个请求,处理完请求,得到客户端的应答,就断开连接,节省传输时间。
无状态:
指对事务的处理没有记忆功能,服务器不知道客户端是什么状态,发送完请求,不会记录客户端任何信息。
共两种报文结构:
请求报文 : 客户端 -> 服务端
响应报文 : 服务端 -> 客户端
面向文本,传输的是ASCII码串
报文格式:
开始行(请求行/响应行)
首部行(请求头/响应头)
实体主体
- Get请求在浏览器回退时是无害的,POST会再次提交一次请求。
- GET请求会被浏览器主动cache,POST不会。
- GET请求只能进行url编码,POST支持多种编码。
- GET请求参数会完全保存在浏览器的浏览记录中,而POST请求的请求参数不会保存。
- GET请求的url长度是有限制的,POST没有。
- GET只接受ASCII字符,POST没有限制。
- POST比GET安全,因为GET的请求参数是直接拼在url上的,不能传递敏感信息。
- POST参数是放在请求体中(Request Body),GET放在url。
301: 永久重定向
302: 暂时重定向
200: OK表示客户端发来的请求在服务端被正确处理。
400: bad request 请求报文存在语法错误。
403: forbidden 表示对请求资源拒绝访问。
404: Not Found 表示在服务器没有找到请求的资源。
500: 表示服务端发生错误。
503: 表示服务器暂时不能处理请求。
1.Https协议需要申请CA证书,需要一定费用。
2.Http是超文本传输协议,信息都是明文传输的。Https是具有安全性的,信息是经过SSL加密传输的。
3.端口不一样,Http端口是80,Https是443。
4.Http的连接十分简单,无状态。Https是由SSL+Http协议构建的可进行加密传输,身份认证的网络协议,比Http更安全。
因为博主目前大二,可能等到我(可能)考研的时候,当再次回头看,会不断完善计算机网络的内容的。(最近主要在面对四六级+期末考试) 感谢支持!!!
GET请求的url长度是有限制的,POST没有。
- GET只接受ASCII字符,POST没有限制。
- POST比GET安全,因为GET的请求参数是直接拼在url上的,不能传递敏感信息。
- POST参数是放在请求体中(Request Body),GET放在url。
[外链图片转存中…(img-tUKX2LjS-1686149987574)]
301: 永久重定向
302: 暂时重定向
200: OK表示客户端发来的请求在服务端被正确处理。
400: bad request 请求报文存在语法错误。
403: forbidden 表示对请求资源拒绝访问。
404: Not Found 表示在服务器没有找到请求的资源。
500: 表示服务端发生错误。
503: 表示服务器暂时不能处理请求。
1.Https协议需要申请CA证书,需要一定费用。
2.Http是超文本传输协议,信息都是明文传输的。Https是具有安全性的,信息是经过SSL加密传输的。
3.端口不一样,Http端口是80,Https是443。
4.Http的连接十分简单,无状态。Https是由SSL+Http协议构建的可进行加密传输,身份认证的网络协议,比Http更安全。
因为博主目前大二,可能等到我(可能)考研的时候,当再次回头看,会不断完善计算机网络的内容的。(最近主要在面对四六级+期末考试) 感谢支持!!!