1 Star 1 Fork 0

巷雨微若 / betterPhper

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
计算机网络.md 20.73 KB
一键复制 编辑 原始数据 按行查看 历史
yangqm 提交于 2023-06-07 16:12 . 1

计算机网络

[TOC]

HTTP协议层


  • HTTP全称为超文本传输协议

  • 计算机与网络设备要相互通信,双方必须遵守相应的规则,我们把这种规则称为协议 ( protocol )

  • CGI ( Common Gateway Interface) 是通用网关接口的简写

  • http持久化连接选项keep-alive,持久化连接的特点是只要任意一端没有明确提出断开连接, 则保持TCP连接状态, 持久化连接解决了多个请求重复造成的TCP连接建立和断开增加的通信开销

  • 计算机将传输的数据分段,并为每一段加上首部字节,由此形成的数据包称为分组( packet )

  • 分组交换是指将大数据分割为一个个叫做包 (Packet) 的较小单位进行传输的方法

  • 字节流服务是指, 为了方便传输, 将大块数据分割成以报文段为单位的数据包进行管理

  • HTTP协议的职责是生成对目标Web服务器的HTTP的请求报文

  • 请求报文是由请求方法, 请求URI, 协议版本, 可选首部字段和内容实体构成的

  • 响应报文基本上由协议版本, 状态码, 用以解释状态码的原因短语, 可选的响应首部字段以及实体主体构成

  • 代理, 是一种有转发功能的程序, 它扮演了位于服务器和客户端中间人的角色, 接收由客户端发送的请求并转发给服务器, 同时也接收服务器返回的响应并转发给客户端

  • 网关, 网关是转发其它服务器通信数据的服务器, 接收从客户端发送来的请求时, 它就像自己拥有资源的服务器一样对请求进行处理, 有时客户端可能不会察觉, 自己的通信目标是一个网关

  • 隧道, 是在相隔甚远的客户端和服务器两者之间进行中转, 并保持双方通信连接的应用程序

  • HTTP的缺点

    1: 通信使用明文不加密, 内容可能被窃听
    2: 不验证通信方的身份, 因此可能遭遇伪装
    3: 无法证明报文的完整性, 所以有可能已遭篡改
  • HTTPS并非是应用层的一种新协议, 只是HTTP通信接口部分用SSL( Secure Socket Layer )通信和TLS (Transport Layer Security)协议代替而已, 通常, HTTP直接和TCP通信, 当使用SSL时, 则演变成先和SSL通信, 再由SSL和TCP通信, 所谓HTTPS, 其实就是身披SSL协议这层外壳的HTTP

  • 在采用SSL后, HTTP就拥有了HTTPS的加密, 证书和完整性保护这些功能

  • SSL是独立于HTTP协议的, 其它运行在应用层的SMTP和Telent等协议均可配合SSL协议使用, 可以说SSL是当今世界上应用最广泛的网络安全技术

  • 加密和解密同用一个密钥的方式被称为对称加密, 加密和解密使用两个不同密钥的方式被称为非对称加密

  • 什么是非对称加密?简单说就是有两把密钥,通常一把叫做公钥、一把叫私钥,用公钥加密的内容必须用私钥才能解开,同样,私钥加密的内容只有公钥能解开

  • 加密算法,可以分可逆加密,不可逆加密,可逆加密又分为对称加密与非对称加密, 所谓的对称加密和非对称加密只针对的是可逆加密算法,例如MD5,RSA等加密算法都属于不可逆的加密算法, 所以不存在是否对称和非对称的说法

  • HTTPS采用混合加密机制( 对称机密 + 非对称加密 ), 非对称加密与对称加密相比其处理方式更为复杂, 因此效率低一些, 在交互密钥环节HTTPS采用非对称加密方式, 之后的建立通信交换报文阶段则使用对称加密方式

  • HTTPS的加密认证过程

    1:https是基于tcp协议的,客户端先会和服务端发起链接建立
    2:接着服务端会把它的证书返回给客户端,证书里面包括公钥S.pub,颁发机构,有效期等信息
    3:客户端拿到证书后可以通过内置的根证书C.pub验证其合法性
    4:客户端生成随机的对称秘钥Z,通过服务端的公钥S.pub加密发给服务端
    5:客户端和服务端通过对称秘钥Z加密来进行http通信
  • 计算机通信会在每个分组中附上源主机地址和目标主机地址以及分组序号, 保存这些信息的部分称为报文首部

  • VPN虚拟私有网络(Virtual Private Network,虚拟专用网)

数据链路层


  • 数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范。通信媒介包括电缆、光纤、电波以及红外线等介质。此外,各个设备之间有时也会通过交换机、网桥、中继器等中转数据

  • MAC地址是没有层次性的, IP地址有层次性, IP地址的前缀包含层次关系, IP的寻址是通过层次关系来实现的

  • MAC地址工作在数据链路层, IP地址工作在网络层

  • 数据链路也可以被视为网络传输中的最小单位, 数据链路层处理的数据不是单纯的 0、1序列,该层把它们集合为一个叫做“帧”的块,然后再进行传输。

  • MAC地址是用来标识同一个链路中不同计算机的一种识别码

  • 数据链路层提供直连两个设备之间的通信功能。与之相比,作为网络层的IP则负责在没有直连的两个网络之间进行通信传输

  • 网络层与数据链路层的关系

    数据链路层提供直连两个设备之间的通信功能。与之相比,作为网络层的IP则负责在没有直连的两个网络之间进行通信传输。那么为什么一定需要这样的两个层次呢?它们之间的区别又是什么呢? 在此,我们以旅行为例说明这个问题。有个人要去一个很远的地方旅行,并且计划先后乘坐飞机、火车、公交车到达目的地。为此,他决定先去旅行社购买机票和火车票。 旅行社不仅为他预订好了旅途过程中所需要的机票和火车票,甚至为他制定了一个详细行程表,详细到 几点几分需要乘坐飞机或火车都一目了然。 当然,机票和火车票只有特定区间内有效,当你换乘不同公司的飞机或火车时,还需要重新购票。仔细分析一下机票和火车票,不难发现,每张票只能够在某一限定区间内移动。此处的“区间内”就如同 通信网络上的数据链路。而这个区间内的出发地点和目的地点就如同某一个数据链路的源地址和目标地址等 首部信息(出发地点好比源MAC地址,目标地点好比目的MAC地址。) 。整个全程的行程表的作用就相当于网络层。如果我们只有行程表而没有车票,就无法搭乘交通工具到达目的地。反之,如果除了车票其他什么都没 有,恐怕也很难到达目的地。因为你不知道该坐什么车,也不知道该在哪里换乘。因此,只有两者兼备,既有某个区间的车票又有整个旅行的行程表,才能保证到达目的地。与之类似,计算机网络中也需要数据链路 层和网络层这个分层才能实现向最终目标地址的通信

网络层


  • 网络层的主要作用是“实现终端节点之间的通信”

  • IP地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”

  • IP大致分为三大作用模块, 它们是IP寻址, 路由, 以及IP分包与组包

  • 路由控制(Routing)是指将分组数据发送到最终目标地址的功能

  • 网络协议定义了两个或多个通信实体之间交换报文的格式和顺序

  • IP地址工作在网络层

  • IP地址指明了节点被分配到的地址, MAC地址是指网卡所属的固定地址, IP地址可以和MAC地址进行配对, IP地址可转换, 但MAC地址基本上不会更改

  • IP地址是要设备上线以后,才能根据他进入了哪个子网来分配的

  • IP协议的职责是搜索对方的地址, 一边中转一边传输

  • 在分组交换中,由分组交换机(路由器)连接通信线路。分组交换的大致处理过程是:发送端计算机将数据分组发送给路由器,路由器收到这些分组数据以后,缓存到自己的缓冲区,然后再转发给目标计算机

  • 在分组交换中,计算机与路由器之间以及路由器与路由器之间通常只有一条通信线路。因此,这条线路其实是一条共享线路, 分组交换中,通信线路的速度可能会有所不同。根据网络拥堵的情况,数据达到目标地址的时间有长有短。另外,路由器的缓存饱和或溢出时,甚至可能会发生分组数据丢失、无法发送到对端的情况

  • 交换机工作在数据链路层,依靠MAC地址进行寻址,转发。路由器工作在网络层依靠IP地址进行寻址,转发。交换机内部适用的MAC地址表,交换机在收到主机发来的数据帧之后,会在自己的MAC里找目的地址,有就转发,没有就放弃。路由器内部是IP路由表,在收到主机发来的TCPIP报文之后,会根据路由表和路由协议,比如OSPF等等,将数据包投到下一个地址, 交换机用于同局域网下的主机通信,而路由器通常用于跨局域网传输数据

  • 主机的定义是指配有IP地址但是不进行路由控制的设备, 既配有IP地址又具有路由控制的设备叫做路由器

  • IP属于面向无连接型, 在发包之前,不需要建立与对端目标地址之间的连接。上层如果遇到需要发送给IP的数据,该数据会立即被压缩成IP包发送出去

  • IP是实现多个数据链路之间通信的协议

  • 为什么IP要采用面向无连接呢? 一是为了简化,二是为了提速。面向连接比起面向无连接处理相对复杂。甚至管理每个连接本身就是一个相当繁琐的事情。此外,每次通信之前都要事先建立连接,又会降低处理速度。需要有连接时,可以委托上一层提供此项服务。因此,IP为了实现简单化与高速化采用面向无连接的方式, 为了提高可靠性,上一层的TCP采用面向有连接型

  • 如果说IP只负责将数据发给目标主机,那么 TCP则负责保证对端主机确实接收到数据

  • IP地址在计算机内部以二进制方式被处理。然而,由于人类社会并不习惯于采用二进制方式,需要采用一种特殊的标记方式。那就是将32位的IP地址以每8位为一组, 分成4组,每组以“.”隔开,再将每组数转换为十进制数

  • IP地址由“网络标识(网络地址)”和“主机标识(主机地址)”两部分组成

  • 同一网段内设备的网络地址是相同的,主机地址是不同的

  • 192.168.128/24 ( /24 表示从头数到第几位为止属于网络标识)

  • IP包被转发到某个路由器时,正是利用目标IP地址的网络标识进行路由。因为即使不看主机标识,只要一见到网络标识就能判断出是否为该网段内的主机

  • 现在有很多学校、家庭、公司内部正采用在每个终端设置私有IP,而在路由器(宽带路由器)或在必要 的服务器上设置全局IP地址的方法。而如果配有私有IP的地址主机连网时,则通过NAT进行通信。

  • 包含在如下范围内的IP地址属于私有IP, 而在此之外(A类~C类范围中除去0/8、127/8。) 的IP地址称为全局IP(也叫公网IP。)

    10.0.0.0 ~ 10.255.255.255      (10/8)        A类
    172.16.0.0 ~ 172.31.255.255    (172.16/12)   B类
    192.168.0.0 ~ 192.168.255.255  (192.168/16)  C类
  • 路由控制表的形成方式有两种:一种是管理员手动设置,另一种是路由器与其他路由器相互交换信息时自动刷新。前者也叫静态路由控制,而后者叫做动态路由控制。为了让动态路由及时刷新路由表,在网络上互连的路由器之间必须设置好路由协议,保证正常读取路由控制信息

  • 默认路由是指路由表中任何一个地址都能与之匹配的记录, 默认路由一般标记为0.0.0.0/0或default

  • 主机路由:它的意思是整个IP地址的所有位都将参与路由。进行主机路由,意味着要基于主机上网卡上配置的IP地址本身,而不是基于该地址的网络地址部分进行路由

  • 环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。计算机使用一个特殊的IP地址127.0.0.1作为环回地址,与该地址具有相同意义的是一个叫做localhost的主机名。使用这个IP或主机名时,数据包不会流向网络

  • 路由表的聚合也叫路由汇总, 通过路由信息的聚合可以有效地减少路由表的条目, 。路由表越大,管理它所需要的内存和CPU也就越多。并且查找路由表的时间也会越长,导致转发IP数据包的性能下降。如果想要构建大规模、高性能网络,则需要尽可能削减路由表的大小

  • 如果路由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址。所谓最为吻合是指相同位数最多的意思(也叫最长匹配)

  • IPV6的地址长度则是128比特, 一般写成8个16位字节。

  • 一个数据包的中转路由的次数不会超过2的8次方 =256个。由此可以避免IP包在网络内无限传递的问题

  • 仅凭IP无法完成通信, 还需要DNS、ARP、ICMP、ICMPv6、DHCP、NAT等众多支持IP的相关技术才能够实现最终通信

    DNS  域名解析服务
    ARP  地址解析协议, 是根据IP地址获取MAC物理地址的一个TCP/IP协议
    ICMP 网络控制消息协议,主要用于传递查询报文与差错报文
    DHCP 动态主机配置协议, 实现自动设置IP地址、统一管理IP地址分配的功能
    NAT  网络地址转换, 
  • ARP(Address Resolution Protocol) 是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个链路上时,可以通过ARP 查找下一跳路由器的MAC地址。不过ARP只适用于IPv4,不能用于IPv6。IPv6中可以用ICMPv6替代ARP发送邻居探索消息

  • 在IP通信中如果某个IP包因为某种原因未能达到目标地址,那么这个具体的原因将由ICMP负责通知

  • DHCP(动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息, 大多数情况下都由宽带路由器充当DHCP的角色

  • ICMP 网络控制消息协议。它是TCP/IP协议簇的一个子协议,用于在IP主机路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用

  • 很多时候用路由器充当DHCP服务器

  • NAT(Network Address Translation,网络地址转换)当在专用网内主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。这种方法需要在专用网(私网IP)连接到因特网(公网IP)的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址(公网IP地址)。这样,所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接

  • 网关专门是为不同网段通信设计的硬件设备,它的存在使得不同网段通信成为可能,充当网关的硬件设备,通常有路由器、三层交换机、防火墙。

TCP与UDP


  • TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP 则常被用于让广播和细节控制交给应用的通信传输
  • TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构
  • TCP用于在传输层有必要实现可靠传输的情况。由于它是面向有连接并具备顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输
  • UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信
  • 应用在使用TCP或UDP时,会用到操作系统提供的类库。这种类库一般被称为套接字(socket)
  • 为了保证数据的准确传输, TCP协议采用了三次握手策略, 发送方首先发送一个带有SYN标志的数据包给对方, 接收端收到后, 回传一个带有SYN/ACK标志的数据包以示传达确认信息, 最后, 发送端再回传一个带有ACK标志的数据包, 代表握手结束, 若在握手过程中某个阶段莫名中断, TCP协议会再次以相同的顺序发送相同的数据包
  • TCP协议的职责是为了方便通信, 将HTTP请求报文按序号分割成多个报文段, 把每个报文段可靠的传输给对方
  • 数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址
  • TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输
  • 在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答ACK
  • 在一定时间内没有等到确认应答,发送端就可以认为数据已经丢失,并进行重发。由此,即使产生了丢包,仍然能够保证数据能够到达对端,实现可靠传输
  • 一个连接的建立与断开,正常过程至少需要来回发送7个包才能完成(建立一个TCP连接需要发送3个包。这个过程也称作“三次握手”)
  • TCP以1个段为单位,每发一个段进行一次确认应答的处理,这样的传输方式有一个缺点。 那就是,包的往返时间越长通信性能就越低, 为解决这个问题,TCP引入了窗口这个概念确认应答不再是以每个分段,而是以更大的单位进行确认时,转发时间将会被大幅度的缩短。也就是说,发送端主机,在发送了一个段以后不必要一直等待确认应答,而是继续发送。窗口大小就是指无需等待确认应答而可以继续发送数据的最大值
  • 窗口机制实现了使用大量的缓冲区临时保存收发数据 ,通过对多个段同时进行确认应答的功能。
  • 滑动窗口协议属于TCP协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认。因此该协议可以加速数据的传输,提高网络吞吐量

路由协议


  • 路由器根据路由控制表(Routing Table)转发数据包
  • 路由器会给相邻路由器发送自己的网络连接信息,而这些信息又像接力一样依次传递给其他路由器,直至整个网络都了解时,路由控制表也就制作完成了。而此时也就可以正确转发IP数据包了

TCP与UDP有什么不同

TCP和UDP是两种互联网协议,它们都用于在网络上传输数据,但是它们之间有一些显著的区别,如下:

连接方式:TCP是面向连接的协议,每次通信前需要建立连接,数据传输完后需要释放连接;UDP则是无连接的协议,不需要建立和释放连接,直接发送数据包。

可靠性:TCP是可靠的协议,能够保证数据传输的可靠性。当数据丢失或损坏时,TCP会自动重传丢失的数据,保证数据的完整性;UDP则是不可靠的协议,数据包在传输过程中有可能丢失、重复或损坏,不保证数据传输的可靠性。

传输速度:UDP比TCP传输速度更快,因为UDP没有TCP的重传机制、流量控制机制和拥塞控制机制,减少了额外的开销。

数据包大小:TCP数据包大小不限,可以根据网络状况动态调整;UDP的数据包大小有限制,最大只能达到64K。

应用场景:TCP适用于对数据可靠性要求较高的场景,如文件传输、邮件发送等;UDP适用于对实时性要求较高的场景,如音频、视频等实时传输。

PHP
1
https://gitee.com/null_488_0272/better-phper.git
git@gitee.com:null_488_0272/better-phper.git
null_488_0272
better-phper
betterPhper
master

搜索帮助