计算机网络常用知识总结。

OSI七层模型

「物理层」

首先解决两台物理机之间的通信需求,具体就是机器A往机器B发送比特流,机器B能收到比特流。

物理层主要定义了物理设备的标准,如网线的类型,光纤的接口类型,各种传输介质的传输速率。

主要作用是传输比特流(0101二进制数据),将比特流转化为电流强弱传输,到达目的后再转化为比特流,即常说的数模转化和模数转换。

这层数据叫做比特。「网卡工作在这层」

物理层是OSI七层模型的物理基础,没有它就谈不上数据传输了

物理层就是由实物所承载的,所以作比喻的话,公路、汽车和飞机等承载货物(数据)的交通工具,就是物理层的象征

「数据链路层」

在传输比特流的过程中,会产生错传、数据传输不完整的可能。

数据链路层定义了「如何格式化数据进行传输」,以及如何控制对物理介质的访问。通常提供错误检测和纠正,以确保数据传输的准确性。

本层将比特数据组成帧,交换机工作在这层,对帧解码,并根据帧中包含的信息把数据发送到正确的接收方。

该层负责物理层面上互连的节点之间的通信传输。例如与1个以太网相连的两个节点间的通讯。

常见的协议有 HDLC、PPP、SLIP

数据链路层会将0、1序列划分为具有意义的数据帧传送给对端(「数据帧的生成与接收」

「网络层」

随着网络节点的不断增加,点对点通讯需要通过多个节点,如何找到目标节点,如何选择最佳路径成为首要需求。

网络层主要功能是将网络地址转化为对应的物理地址,并决定如何将数据从发送方路由到接收方。

网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A到另一个网络中节点B的最佳路径。

由于网络层处理并智能指导数据传送,路由器连接网络隔断,所以路由器属于网络层。

此层的数据称之为数据包。本层需要关注的协议TCP/IP协议中的IP协议。

网络层负责将数据传输到目标地址。目标地址可以使多个网络通过路由器连接而成的某一个地址。因此这一层主要负责「寻址和路由选择」。主要由 IP、ICMP 两个协议组成

网络层将数据从发送端的主机发送到接收端的主机,两台主机间可能会存在很多数据链路,但网络层就是负责找出一条相对顺畅的通路将数据传递过去。传输的地址使用的是IP地址。IP地址通过不断转发到更近的IP地址,最终可以到达目标地址

「传输层」

随着网络通信需求的进一步扩大,通信过程中需要发送大量的数据,如海量文件传输,可能需要很长时间,网络在通信的过程中会中断很多次,此时为了保证传输大量文件时的准确性,需要对发送出去的数据进行切分,切割为一个一个的段落(Segement)发送,其中一个段落丢失是否重传,段落是否按顺序到达,是传输层需要考虑的问题。

传输层解决了主机间的数据传输,数据间的传输可以是不同网络,并且传输层解决了「传输质量」的问题。

传输层需要关注的协议有TCP/IP协议中的TCP协议和UDP协议。

「会话层」

自动收发包,自动寻址。

会话层作用是「负责建立和断开通信连接」,何时建立,断开连接以及保持多久的连接。常见的协议有 ADSP、RPC 等

「表示层」

Linux给WIndows发包,不同系统语法不一致,如exe不能在Linux下执行,shell不能在Windows不能直接运行。于是需要表示层。

解决「不同系统之间通信语法问题」,在表示层数据将按照网络能理解的方案进行格式化,格式化因所使用网络的不同而不同。

它主要负责数据格式的转换。具体来说,就是讲设备固有的数据格式转换为网络标准格式。常见的协议有ASCII、SSL/TLS 等

「应用层」

规定发送方和接收方必须使用一个固定长度的消息头,消息头必须使用某种固定的组成,消息头中必须记录消息体的长度等信息,方便接收方正确解析发送方发送的数据。

应用层旨在更「方便应用从网络中接收的数据」,重点关注TCP/IP协议中的HTTP协议

四层传输层数据被称作「段」(Segments);

三层网络层数据被称做「包」(Packages);

二层数据链路层时数据被称为「帧」(Frames);

一层物理层时数据被称为「比特流」(Bits)。

TCP和IP模型

OSI模型注重通信协议必要的功能;TCP/IP更强调在计算机上实现协议应该开发哪种程序

「TCP/IP划分了四层网络模型」

  • 第一层:应用层,主要有负责web浏览器的HTTP协议, 文件传输的FTP协议,负责电子邮件的SMTP协议,负责域名系统的DNS等

  • 第二层:传输层,主要是有「可靠传输」的TCP协议,特别「高效」的UDP协议。主要负责传输应用层的数据包。

  • 第三层:网络层,主要是IP协议。主要负责寻址(找到目标设备的位置)

  • 第四层:数据链路层,主要是负责转换数字信号和物理二进制信号。

「四层网络协议的作用」

  • 发送端是由上至下,把上层来的数据在头部加上各层协议的数据(部首)再下发给下层。

  • 接受端则由下而上,把从下层接受到的数据进行解密和去掉头部的部首后再发送给上层。

  • 层层加密和解密后,应用层最终拿到了需要的数据。

「举个例子:」

我们需要发送一个「index.html」

两台电脑在应用层都使用HTTP协议(即都使用浏览器)。

在传输层,TCP协议会将HTTP协议发送的数据看作一个数据包,并在这个数据包前面加上TCP包的一部分信息(部首)

在网络层,IP协议会将TCP协议要发送的数据看作一个数据包,同样的在这个数据包前端加上IP协议的部首

在数据链路层,对应的协议也会在IP数据包前端加上以太网的部首。

源设备和目标设备通过网线连接,就可以通过物理层的二进制传输数据。

数据链路层,会使用对应的协议找到物理层的二进制数据,解码得到以太网的部首信息和对应的IP数据包,再将IP数据包传给上层的网络层。

数据链路层>网络层>传输层>应用层,一层层的解码,最后就可以在浏览器中得到目标设备传送过来的「index.html」

「TCP/IP协议族」

从字面意义上来讲,TCP/IP是指「传输层」的TCP协议和「网络层」的IP协议。

实际上,TCP/IP只是利用 IP 进行通信时所必须用到的协议群的统称。

具体来说,在网络层是IP/ICMP协议、在传输层是TCP/UDP协议、在应用层是SMTP、FTP、以及 HTTP 等。他们都属于 TCP/IP 协议。

网络设备

交换机

交换机可以接入多台电脑

每个电脑网卡的 「MAC 地址」都是不一样的,电脑发送数据时,数据头部携带网卡的 MAC 地址,用 MAC 地址标识来不同的电脑

交换机就可以识别数据头部的 MAC 地址来区分不同的电脑

交换机除了能识别不同的电脑,还需要找到电脑连接的「交换机端口」,才能顺利的把数据从相应端口发送出去

交换机通过「自学机制」,把学习到的设备 MAC 地址和交换机端口号添加到 「MAC 地址表」,并根据 MAC 地址表进行数据「转发」

路由器

交换机需要记录的 MAC 地址表也越来越多,需要的交换机也越来越多

但是交换机的「容量和性能有限」,MAC 地址表无法记录全世界电脑的 MAC 地址和对应的端口号,MAC 地址表太大也无法快速查找到对应的 MAC 地址表项

于是就有了三层网络设备「路由器」,路由器可以把全世界的网络连接起来

局域网内的网络连接可以使用「交换机」,例如一个公司内的网络或者一个校园内的网络通过交换机连接

不同区域的局域网互联使用「路由器」

那么如何区分不同的网络区域呢?又是如何跨网络区域进行数据转发的呢?

路由器有多个端口,分别连接不同的网络区域,不同网络区域的 IP 地址「网络号不同」

它通过识别目的 IP 地址的「网络号」,再根据「路由表」进行数据转发

HTTP

「请求方法」

HTTP1.0 定义了三种请求方法:GET, POST 和 HEAD方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

序 号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

「GET请求和POST请求的区别」

  1. GET 请求的请求参数是添加到 head 中,可以在 url 中可以看到;POST 请求的请求参数是添加到body中,在url 中不可见。

  2. 请求的url有长度限制,这个限制由浏览器和 web 服务器决定和设置的,例如IE浏览器对 URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应,因为GET请求的参数是添加到URL中,所以GET请求的URL的长度限制需要将请求参数长度也考虑进去。而POST请求不用考虑请求参数的长度。

  3. GET请求产生一个数据包; POST请求产生2个数据包,在火狐浏览器中,产生一个数据包,这个区别点在于浏览器的请求机制,先发送请求头,再发送请求体,因为GET没有请求体,所以就发送一个数据包,而POST包含请求体,所以发送两次数据包,但是由于火狐机制不同,所以发送一个数据包。

  4. GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。

  5. GET是幂等的,而POST不是(幂等表示执行相同的操作,结果也是相同的)

  6. GET是获取数据,POST是修改数据

状态码

「状态码由3位数字组成,第一位定义响应的类别」

1XX:指示信息,表示请求以接收,继续处理

2XX:成功,表示请求已经被成功接收、理解、接受

  • 200 OK 是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。

  • 204 No Content 也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。

  • 206 Partial Content 是应用于 HTTP 分块下载或断电续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。

3XX:状态码表示客户端请求的资源发送了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是「重定向」

  • 301 Moved Permanently 表示永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问,搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址。

  • 302 Moved Permanently 表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问,搜索引擎会抓取新的内容而保存旧的网址。

301 和 302 都会在响应头里使用字段 Location,指明后续要跳转的 URL,浏览器会自动重定向新的 URL。

  • 304 Not Modified不具有跳转的含义,表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向,用于缓存控制。

4XX:状态码表示客户端发送的「报文有误」,服务器无法处理,也就是错误码的含义。

  • 400 Bad Request表示客户端请求的报文有错误。

  • 401 Unauthorized:缺失或错误的认证,这个状态代码必须和WWW-Authenticate报头域一起使用。

  • 403 Forbidden表示服务器禁止访问资源,并不是客户端的请求出错。

  • 404 Not Found表示请求的资源在服务器上不存在或未找到,所以无法提供给客户端。

5XX:状态码表示客户端请求报文正确,但是「服务器处理时内部发生了错误」,属于服务器端的错误码。

  • 501 Not Implemented 表示客户端请求的功能还不支持。

  • 502 Bad Gateway 通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。

  • 503 Service Unavailable 表示服务器当前很忙,暂时无法响应服务器。

  • 504 Gateway Timeout:网关超时,由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。

「301和302的区别」

301重定向,指页面永久性转移,表示为资源或页面永久性地转移到了另一个位置。

301是HTTP协议中的一种状态码,当用户或搜索引擎向服务器发出浏览请求时,服务器返回的HTTP数据流中头信息中包含状态码 301 ,表示该资源已经永久改变了位置。

302重定向是页面暂时性转移,搜索引擎会抓取新的内容而保存旧的网址并认为新的网址只是暂时的。

HTTP1.1

「长连接」

HTTP 1.1支持长连接

HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

HTTP 1.1则支持持久连接Persistent Connection,并且默认使用,在同一个TCP的连接中可以传送多个HTTP请求和响应,多个请求和响应可以重叠,多个请求和响应可以同时进行,更加多的请求头和响应头

HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为Close时,客户端通知服务器返回本次请求结果后关闭连接。

「管道网络传输」

HTTP/1.1 采用了长连接的方式,这使得管道网络传输成为了可能。

即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以「减少整体的响应时间。」

举例来说,客户端需要请求两个资源。以前的做法是,在同一个TCP连接里面,先发送 A 请求,然后等待服务器做出回应,收到后再发出 B 请求,管道机制则是允许浏览器同时发出 A 请求和 B 请求。

但是服务器还是按照「顺序」,先回应 A 请求

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机网络是现代信息社会中的基础设施之一,对于我们日常的网络通信和数据传输起着至关重要的作用。在学习计算机网络的过程中,笔记是我们记录和总结所学知识的重要工具。 首先,我会在笔记的开头写上日期和主题,以便日后回顾和查找。接着,我会记录所学内容的核心概念和定义。对于一些较为抽象或难以理解的概念,我会进行详细解释,以确保自己对其有清晰的理解。 在记录过程中,我会尽量使用简洁明了的语言,避免过多的冗余文字,以方便日后的复习。同时,我会使用箭头、列表或图表等形式来展示网络的结构、协议的运作过程等复杂内容,以帮助我更好地理解和记忆。 除了核心概念和定义外,我还会将一些重要的实际应用和技术细节记录在笔记中。例如,计算机网络中常见的传输层协议TCP和UDP的区别、以及常用的网络安全技术等,都是我认为需要重点掌握和复习的内容。 在整理笔记时,我会将相关内容进行分类整理,建立一个清晰的知识体系。这有助于我以后在查找和回顾时快速地找到需要的内容,避免重复学习或遗漏重要知识。 最后,我也会将一些自己的理解、思考和思考问题记录在笔记中。这有助于我在复习过程中更好地理解知识,并能提出更深入的问题,加深对计算机网络的理解。 通过记录和整理这些笔记,我相信我可以更好地理解和掌握计算机网络知识,为将来的学习和工作奠定良好的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值