计算机网络
写在前面 这里是我预习完了 重新瞎写写 当复习了
OSI参考模型和TCP/IP协议
-
应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。
-
表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
-
会话层 :建立及管理会话。
-
传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整***,UDP 主要提供及时***。
-
网络层 :为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。
-
数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
-
物理层 :考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异
**PS: **
- 五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。
- TCP/IP
它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。
TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。
完整的网络数据传送简图
在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。
路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要传输层和应用层。
计算机网络基础知识
局域网和广域网
- 局域网 覆盖范围小 自己花钱购买设备 带宽固定 自己维护100米 带宽10M 100M 1000M
- 广域网 距离远 花钱租带宽
- Internet ISP 自己的机房 对网民提供访问Internet连接
ISP
互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。
目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。
理解OSI参考模型分层
OSI参考模型对网络排错指导
- 物理层故障 查看连接状态发送和接收的数据包
- 数据链路层故障 MAC冲突 ADSL欠费网速 没办法协商一致 计算机连接到错误的VLAN
- 网络层故障 配置错我IP地址 子网掩码配置错 我的网关路由器没有配置到达目标网络的路曲
- 应用层故障 应用程序配置错误
OSI参考模型和网络安全
- 物理层安全
- 数据链路层安全 数据链路层安全 ADSL账号密码 VLAN 交换机端口绑定MAC地址
- 网络层安全 网络层安全 在路由器上使用ACL控制数据包流量
- 应用层安全 开发的应用程序没有漏洞
主机之间的通信方式
- 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。
- 对等(P2P):不区分客户和服务器。
电路交换与分组交换
- 电路交换
电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到 10%。 - 分组交换
每个分组都有首部和尾部,包含了源地址和目的地址等控制信息,在同一个传输线路上同时传输多个分组互相不会影响,因此在同一条传输线路上允许同时传输多个分组,也就是说分组交换不需要占用传输线路。
在一个邮局通信系统中,邮局收到一份邮件之后,先存储下来,然后把相同目的地的邮件一起转发到下一个目的地,这个过程就是存储转发过程,分组交换也使用了存储转发过程。
时延
总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延
- 排队时延 分组在路由器的输入队列和输出队列中排队等待的时间,取决于网络当前的通信量。
- 处理时延 主机或路由器收到分组时进行处理所需要的时间,例如分析首部、从分组中提取数据、进行差错检验或查找适当的路由等。
- 传输时延 主机或路由器传输数据帧所需要的时间。
- 传播时延 电磁波在信道中传播所需要花费的时间,电磁波传播的速度接近光速。
物理层
- 机械特性
- 电器特性
- 功能特性
- 过程特性
- 传输数据的单位:比特
数据传输系统:源系统(源点、发送器) --> 传输系统 --> 目的系统(接收器、终点)
通道:
数据通信的基础知识
数据通信模型
相关的术语
-
信道: 单工通信 半双工通信 全双工通信
单向通道(单工通道):只有一个方向通信,没有反方向交互,如广播
双向交替通信(半双工通信):通信双方都可发消息,但不能同时发送或接收
双向同时通信(全双工通信):通信双方可以同时发送和接收信息 -
通道复用技术:
频分复用(FDM,Frequency Division Multiplexing):不同用户在不同频带,所用用户在同样时间占用不同带宽资源
时分复用(TDM,Time Division Multiplexing):不同用户在同一时间段的不同时间片,所有用户在不同时间占用同样的频带宽度
波分复用(WDM,Wavelength Division Multiplexing):光的频分复用
码分复用(CDM,Code Division Multiplexing):不同用户使用不同的码,可以在同样时间使用同样频带通信
基带信号 带通信号
调制方法: 调幅 调频 调相
常用的编码单: 极性不归零码 双极性不归零码 单极性归零码 双极性归零码 曼彻斯特编码 差分曼彻斯特编码
信道的极限容量 :
奈氏准则 没有信号干扰 码元的传输速率有上限
香农公式 有信号干扰无差错传输速率 C=W1og2(1+S/N) b/s
数据链路层
- 封装成帧: 把网络层的 IP 数据报封装成帧,SOH - 数据部分 - EOT
- 透明封装:不管数据部分什么字符,都能传输出去;可以通过字节填充方法解决(冲突字符前加转义字符)
- 无差错接受:降低误码率(BER,Bit Error Rate),广泛使用循环冗余检测(CRC,Cyclic Redundancy Check)
- 点到点线路的数据链路层 PPP(Point-to-Point Protocol):用户计算机和 ISP 通信时所使用的协议
- 广播信道的数据链路层 CSMA/CD
- 硬件地址(物理地址、MAC 地址)
- 单播(unicast)帧(一对一):收到的帧的 MAC 地址与本站的硬件地址相同
- 广播(broadcast)帧(一对全体):发送给本局域网上所有站点的帧
- 多播(multicast)帧(一对多):发送给本局域网上一部分站点的帧
网络层
以下来自百度百科
部分协议
- IP(Internet Protocol,网际协议)是为计算机网络相互连接进行通信而设计的协议。
- ARP(Address Resolution Protocol,地址解析协议)
- ICMP(Internet Control Message Protocol,网际控制报文协议)
- IGMP(Internet Group Management Protocol,网际组管理协议)
ABC类网(略) 和 超网
CIDR的特点
(1)CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,可以更加有效的分配IP地址空间。CIDR使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号,而不是像分类地址中只能使用1字节、2字节、3字节长的网络号。CIDR不再使用“子网”的概念而使用网络前缀,使用IP地址从三级编址又回到了两级编址,即无分类的两级编址。
IP地址::={<网络前缀>,<主机号>}
CIDR也使用“斜线记法”,即在IP地址后写上斜线“/”,然后写上网络前缀所占的位数(对应子网掩码中1的个数)。
(2)CIDR把网络前缀都相同的连续的IP地址组成“CIDR地址块”,一个CIDR地址块是由地址块的起始地址(即地址块中地址数值最小的一个)和地址块中的地址数来定义的。CIDR地址块也可用斜线记法来表示。
由于一个CIDR地址块可以表示很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合通常称为路由聚合,它使得路由表中的一个项目可以表示原来传统分类地址的很多个路由。路由聚合也称为构成超网。路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个因特网的性能。
优点和不足
超网的优点是可以充分利用C类网络空间资源 。在多数情况下,使用超网地址分配乐意使分配的网络空间与实际所需的结点数量相匹配,因而提高了地址空间的利用率。例如,一个4000个结点的物理网络,分配一个B类地址显然是浪费,但C类地址又太小,那么我们可以为该物理网络分配一个由16个连续C类网络构成的地址空间块。
超网方式也带来了新的问题:路由表规模的增长。路由表规模与网络数量成正比。一个物理网络对应多个C类网络地址,使得该网络在路由表中对应于多个C类的前缀表项,使路由表过于庞大。路由协议为交换路由信息而带来的开销也急剧增加。这个问题可采用无类型域间路由就(CIDR,Class Inter-Domain-Routing)技术来解决。尽管一个物理网络在路由表中对应多个表项,但所有表项必然指向同一个下一跳地址,因此有可能对表项进行聚合。CIDR技术可以把路由表中连续的C类网络地址块聚合的C类网络地址必须是连续的,且地址块的数量为2的幂。聚合以后的CIDR地址块的网络前缀的长度。显然,子网掩码的长度将小于24(C类网络的掩码长度)。与子网选路中采用的表示形式一样,CIDR定义得地址快也统一表示成“网络前缀/子网掩码位数”的形式。
-
ICMP 网际控制报文协议
应用:- PING(Packet InterNet Groper,分组网间探测)测试两个主机之间的连通性
- TTL(Time To Live,生存时间)该字段指定 IP 包被路由器丢弃之前允许通过的最大网段数量
- PING(Packet InterNet Groper,分组网间探测)测试两个主机之间的连通性
-
IP多播
- IGMP(Internet Group Management Protocol,网际组管理协议)
- 多播路由选择协议
-
内部网关协议
RIP(Routing Information Protocol,路由信息协议)
OSPF(Open Sortest Path First,开放最短路径优先) -
外部网关协议
BGP(Border Gateway Protocol,边界网关协议)
路由表包含什么?
网络 ID(Network ID, Network number):就是目标地址的网络 ID。
子网掩码(subnet mask):用来判断 IP 所属网络
下一跳地址/接口(Next hop / interface):就是数据在发送到目标地址的旅途中下一站的地址。其中 interface 指向 next hop(即为下一个 route)。一个自治系统(AS, Autonomous system)中的 route 应该包含区域内所有的子网络,而默认网关(Network id: 0.0.0.0, Netmask: 0.0.0.0)指向自治系统的出口。
根据应用和执行的不同,路由表可能含有如下附加信息:
花费(Cost):就是数据发送过程中通过路径所需要的花费。
路由的服务质量
路由中需要过滤的出/入连接列表
传输层(运输层)
协议:
- TCP(Transmission Control Protocol,传输控制协议)
- UDP(User Datagram Protocol,用户数据报协议)
以下源自百度
TCP
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,其传输的单位是报文段。
-
特征:
- 面向连接
- 只能点对点(一对一)通信
- 可靠交互
- 全双工通信
- 面向字节流
-
TCP 如何保证可靠传输:
- 确认和超时重传
- 数据合理分片和排序
- 流量控制
- 拥塞控制
- 数据校验
TCP:状态控制码(Code,Control Flag),占 6 比特,含义如下:
- URG:紧急比特(urgent),当
URG=1
时,表明紧急指针字段有效,代表该封包为紧急封包。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据), 且上图中的 Urgent Pointer 字段也会被启用。 - ACK:确认比特(Acknowledge)。只有当
ACK=1
时确认号字段才有效,代表这个封包为确认封包。当ACK=0
时,确认号无效。 - PSH:(Push function)若为 1 时,代表要求对方立即传送缓冲区内的其他对应封包,而无需等缓冲满了才送。
- RST:复位比特(Reset),当
RST=1
时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。 - SYN:同步比特(Synchronous),SYN 置为 1,就表示这是一个连接请求或连接接受报文,通常带有 SYN 标志的封包表示『主动』要连接到对方的意思。
- FIN:终止比特(Final),用来释放一个连接。当
FIN=1
时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
UDP
-
UDP(User Datagram Protocol,用户数据报协议)是 OSI(Open System Interconnection 开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,其传输的单位是用户数据报。
-
特征:
- 无连接
- 尽最大努力交付
- 面向报文
- 没有拥塞控制
- 支持一对一、一对多、多对一、多对多的交互通信
- 首部开销小
TCP 与 UDP 的区别
- TCP 面向连接,UDP 是无连接的;
- TCP 提供可靠的服务,也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付
- TCP 的逻辑通信信道是全双工的可靠信道;UDP 则是不可靠信道
- 每一条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一和多对多的交互通信
- TCP 面向字节流(可能出现黏包问题),实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的(不会出现黏包问题)
- UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 IP 电话,实时视频会议等)
- TCP 首部开销20字节;UDP 的首部开销小,只有 8 个字节
TCP 流量控制
概念
流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
方法
利用可变窗口进行流量控制
TCP 拥塞控制
概念
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
方法
- 慢开始( slow-start )
- 拥塞避免( congestion avoidance )
- 快重传( fast retransmit )
- 快恢复( fast recovery )
粘包 握手挥手问题
TCP 粘包问题:
https://blog.csdn.net/tiandijun/article/details/41961785
[https://blog.csdn.net/tiandijun/article/details/41961785]: https://blog.csdn.net/tiandijun/article/details/41961785
握手 挥手问题:
https://www.zhihu.com/question/24853633/answer/115173386
https://zhuanlan.zhihu.com/p/86426969
[https://www.zhihu.com/question/24853633/answer/115173386]: https://www.zhihu.com/question/24853633/answer/115173386
[https://zhuanlan.zhihu.com/p/86426969]: https://zhuanlan.zhihu.com/p/86426969
应用层
DNS
-
DNS(Domain Name System,域名系统)是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 端口 53。当前,对于每一级域名长度的限制是 63 个字符,域名总长度则不能超过 253 个字符。
-
域名 ::= {<三级域名>.<二级域名>.<顶级域名>}
,如:
FTP
- FTP(File Transfer Protocol,文件传输协议)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式,使用 TCP 数据报,提供交互式访问,双向传输。
- TFTP(Trivial File Transfer Protocol,简单文件传输协议)一个小且易实现的文件传输协议,也使用客户-服务器方式,使用UDP数据报,只支持文件传输而不支持交互,没有列目录,不能对用户进行身份鉴定
百度吧 懒得写下去了
TELNET
WWW
HTTP //HTTP状态码:
https://www.runoob.com/http/http-status-codes.html
[https://www.runoob.com/http/http-status-codes.html]: https://www.runoob.com/http/http-status-codes.html
- SMTP(Simple Main Transfer Protocol,简单邮件传输协议)是在 Internet 传输 Email 的标准,是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过 Telnet 程序来测试一个 SMTP 服务器。SMTP 使用 TCP 端口 25。
- DHCP(Dynamic Host Configuration Protocol,动态主机设置协议)是一个局域网的网络协议,使用 UDP 协议工作,主要有两个用途:
- 用于内部网络或网络服务供应商自动分配 IP 地址给用户
- 用于内部网络管理员作为对所有电脑作中央管理的手段
- SNMP(Simple Network Management Protocol,简单网络管理协议)构成了互联网工程工作小组(IETF,Internet Engineering Task Force)定义的 Internet 协议族的一部分。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。