8、计算机网络知识点

326 阅读11分钟

1、OSI参考模型

image.png

OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)

2、TCP/IP参考模型

1、应用层
应用层最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,TELNET等。

2、传输层
建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的TCP、UDP就是在这一层。端口号既是这里的“端”。

3、网络层
本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。

4、数据链路层
通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路。

3、TCP/IP和UDP

TCP/IP即传输控制/网络协议,是面向连接的协议,发送数据前要先建立连接(发送方和接收方的成对的两个之间必须建 立连接),TCP提供可靠的服务,也就是说,通过TCP连接传输的数据不会丢失,没有重复,并且按顺序到达。

UDP它是属于TCP/IP协议族中的一种。是无连接的协议,发送数据前不需要建立连接,是没有可靠性的协议。因为不需要建立连接所以可以在在网络上以任何可能的路径传输,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

4、TCP与UDP区别

1、TCP是面向连接的协议,发送数据前要先建立连接,TCP提供可靠的服务,也就是说,通过TCP连接传输的数据不会丢失,没有重复,并且按顺序到达;

2、UDP是无连接的协议,发送数据前不需要建立连接,是没有可靠性;

3、TCP通信类似于于要打个电话,接通了,确认身份后,才开始进行通行;

4、UDP通信类似于学校广播,靠着广播播报直接进行通信。

5、TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多;

6、TCP是面向字节流的,UDP是面向报文的;
面向字节流是指发送数据时以字节为单位,一个数据包可以拆分成若干组进行发送,而UDP一个报文只能一次发完。

7、TCP首部开销(20字节)比UDP首部开销(8字节)要大。

8、UDP的主机不需要维持复杂的连接状态表。

5、TCP和UDP的应用场景

对某些实时性要求比较高的情况使用UDP,比如游戏,媒体通信,实时直播,即使出现传输错误也可以容忍;其它大部分情况下,HTTP都是用TCP,因为要求传输的内容可靠,不出现丢失的情况。

6、TCP的三次握手

在网络数据传输中,传输层协议TCP要建立连接的可靠传输,TCP建立连接的过程,我们称为三次握手。

image.png

第一次握手:Client将SYN置1,随机产生一个初始序列号seq发送给Server,进入SYN_SENT状态;

第二次握手:Server收到Client的SYN=1之后,知道客户端请求建立连接,将自己的SYN置1,ACK置1,产生一个acknowledge number=sequence number+1,并随机产生一个自己的初始序列号,发送给客户端;进入SYN_RCVD状态;

第三次握手:客户端检查acknowledge number是否为序列号+1,ACK是否为1,检查正确之后将自己的ACK置为1,产生一个acknowledge number=服务器发的序列号+1,发送给服务器;进入ESTABLISHED状态;服务器检查ACK为1和acknowledge number为序列号+1之后,也进入ESTABLISHED状态;完成三次握手,连接建立。

客户端向服务端发送SYN
服务端返回SYN,ACK
客户端发送ACK

7、TCP的四次挥手

在网络数据传输中,传输层协议断开连接的过程我们称为四次挥手。

image.png

第一次挥手:Client将FIN置为1,发送一个序列号seq给Server;进入FIN_WAIT_1状态;

第二次挥手:Server收到FIN之后,发送一个ACK=1,acknowledge number=收到的序列号+1;进入CLOSE_WAIT状态。此时客户端已经没有要发送的数据了,但仍可以接受服务器发来的数据。

第三次挥手:Server将FIN置1,发送一个序列号给Client;进入LAST_ACK状态;

第四次挥手:Client收到服务器的FIN后,进入TIME_WAIT状态;接着将ACK置1,发送一个acknowledge number=序列号+1给服务器;服务器收到后,确认acknowledge number后,变为CLOSED状态,不再向客户端发送数据。客户端等待2*MSL(报文段最长寿命)时间后,也进入CLOSED状态。完成四次挥手。

8、Socket和http的区别和应用场景

网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。

1、Socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;

2、Socket适用场景:网络游戏,银行持续交互,直播,在线视频等。

3、http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断开等待下次连接。

4、http适用场景:公司OA服务,互联网服务,电商,办公,网站等等。

9、常见的http状态码

1**:这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束

2**:表示请求成功,

3**:表示重定向

4**:表示客户端错误

5**:表示服务器端错误

100(continue),客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收

200(OK),表示请求成功,请求所希望的响应头或数据体将随此响应返回。

202(Accepted),服务器已接受请求,但尚未处理。

204(No-Content),服务器成功处理了请求,但不需要返回任何实体内容

205(Reset-Content),服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图。该响应主要是被用于接受用户输入后,立即重置表单,以便用户能够轻松地开始另一次输入。

206(Partial-Content),服务器已经成功处理了部分 GET请求。

301(Moved-Permanently),永久性重定向

302(Moved-Temporarily),暂时性重定向

304(Not-Modified),浏览器端缓存的资源依然有效

400(Bad-Reques),请求有误,当前请求无法被服务器理解。

401(Unauthorized),当前请求需要用户验证。

403(Forbidden),服务器已经理解请求,但是拒绝执行它。

404(Not-Found),请求的资源没有被找到

500(Interval Server Error),服务器内部错误

502(Bad GateWay),网关出错

503(Service Unavailable),由于临时的服务器维护或者过载,服务器当前无法处理请求。

504(Gateway Timeout),作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

10、GET方法与POST方法的区别

1、区别一:
get重点在从服务器上获取资源,post重点在向服务器发送数据;

2、区别二:
Get传输的数据量小,因为受URL长度限制,但效率较高; Post可以传输大量数据,所以上传文件时只能用Post方式;

3、区别三:
get是不安全的,因为get请求发送数据是在URL上,是可见的,可能会泄露私密信息,如密码等;
post是放在请求头部的,是安全的。

11、cookie与session

cookie是由Web服务器保存在用户浏览器上的文件(key-value格式),可以包含用户相关的信息。客户端向服务器发起请求,就提取浏览器中的用户信息由http发送给服务器

session 是浏览器和服务器会话过程中,服务器会分配的一块储存空间给session。
服务器默认为客户浏览器的cookie中设置 sessionid,这个sessionid就和cookie对应,浏览器在向服务器请求过程中传输的cookie 包含 sessionid ,服务器根据传输cookie 中的 sessionid 获取出会话中存储的信息,然后确定会话的身份信息。

cookie与session区别

1、cookie数据存放在客户端上,安全性较差,session数据放在服务器上,安全性相对更高。
2、单个cookie保存的数据不能超过4K,session无此限制。

http和https的区别?

一次完整的HTTP请求所经历几个步骤?

1、建立TCP连接

2、Web浏览器向Web服务器发送请求行
一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET /sample/hello.jsp HTTP/1.1。

3、Web浏览器发送请求头
浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

4、Web服务器应答
客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。

5、Web服务器发送应答头
正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

6、Web服务器向浏览器发送数据
Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

7、Web服务器关闭TCP连接

从输入网址到获得页面的过程

1、浏览器查询 DNS,获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;

2、浏览器获得域名对应的IP地址以后,浏览器向服务器请求建立链接,发起三次握手;

3、TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求;

4、服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

5、浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;

6、浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。