计算机网络复习

复习点:(1)Tcp如何保证可靠性  (2)HTTP和HTTPS  (3)HTTP状态码 (4)IP地址和MAC地址 (5)OSI七层模型和TCP/IP层模型

(6) 在浏览器中输入www.baidu.com,按下回车,到浏览器显示百度页面的过程 (7)HTTP1.0和HTTP1.1的区别 (8)阻塞、非阻塞、同步、异步

一、Tcp如何保证可靠性?

发送确认,超时重传,划动窗口

(1)序列号、确认应答、超时重传

数据到达接收方,接收方需要发出一个确认应答,表示已经收到数据段,并且确认序号会说明了它下一次需要接收的数据序列号。如果发送方迟迟没有收到确认应答,那么发送方就会认为是发送的数据丢失(实际的情况有两种:1、发送的数据确实丢失,2、接收方发送的确认报文丢失),这时发送方就会启动超时重传机制,重传没有收到确认号的数据。

(2)窗口控制与高速重发控制/快速重传(重复确认应答)

Tcp会利用窗口控制来提高传输速度,即数据不用等到应答到达后才能继续发送下一个数据,窗口的大小就是无需等待确认而可以继续发送数据的最大值。如果不使用窗口控制,数据必须等到上一个数据发送成功之后,才能继续发送。那样将会导致Tcp的效率非常的低下。而且这个窗口不是固定不变的,这个值是由收发双方共同确认的。

使用窗口控制的Tcp协议更加的灵活,根据Tcp的要求发送的数据,在一段时间没有收到接收方的确认就会重传没有收到确认数据的部分,但前面提到过,没有收到确认报文的原因还可能是确认报文丢失。但在使用了窗口控制之后,可以有效的避免这样的问题,如果接收端没有收到这段始据,这样就会导致发送发每次收到的确认号都是一样的,在连续三次收到相同的确认号后,发送方就会超时重传。而如果是确认报文丢失,不会引起超时重传。

(3)拥塞控制

Tcp拥塞控制的算法一共有4种:1、慢开始        2、拥塞避免        3、快重传        4、快恢复。

慢开始:如果在一开始就把窗口的大小定的很大,发送端连续发送大量的数据,可能会导致网络的拥塞,所以Tcp为了防止这种情况进行了雍塞控制,在一开始将窗口值设置为1,之后每次收到一个确认应答,将控制窗口扩大一倍。

雍塞控制:为了避免控制窗口增大过快而导致网络雍塞,所以Tcp为规定了慢开始的门限值,一旦窗口值达到了该门限值,就会使用拥塞避免的算法。使用拥塞控制算法之后,窗口值将不会再呈指数级增长而是每次再接收到确认应答之后将窗口值加1.

快重传:在遇到3次重复确认应答(高速重发控制)时,代表接收方没有收到这段数据,这时就会立即对这段数据重传。

快恢复:在遇到3次重复确认报文之后,TCP会将窗口值调整为现在的一半,之后使用拥塞控制协议增加窗口的大小。

二、HTTP和HTTPS

HTTP和HTTPS的区别

(1)HTTPS更安全:HTTP协议是以明文方式在网络上传输的,而HTTPS协议传输的数据则是经过TLS加密后的,HTTPS具有更高的安全性。

(2)HTTPS在TCP三次握手阶段之后,还需要SSL的handshake,协商加密使用对称加密密钥。

(3)HTTPS协商需要服务器端申请整数,浏览器安装对应的根证书。

(4)HTTP的端口是80,HTTPS协议端口是443

HTTPS的优点:

(1)HTTPS传输数据过程种使用密钥加密。所以安全性更高。

(2)HTTPS协议可以认证用户和服务器,确保数据发送到正确的用户和服务器。

HTTPS的缺点:

(1)HTTPS握手阶段延时比较高:由于在进行HTPP会话之前,还需要进行SSL握手因此HTTPS协议握手阶段延时增加。

(2)HTTPS部署成本高:一方面HTTPS协议需要使用证书来验证自身的安全性,所以需要购买CA证书;另一方面由于采用HTTPS协议需要进行加解密的计算,占用CPU资源较多,需要的服务器配置或数目高。

三、HTTP状态码

HTTP协议的响应报文由状态行、响应头部和响应包体组成,其响应状态码一共分为5类:

状态码状态解释
1XX指示信息表示请求已接收,继续处理
2XX成功

表示请求已被成功接收

3XX重定向要完成请求必须更进一步的操作
4XX客户端错误请求出现语法错误后请求无法实现
5XX服务器错误服务器未能实现合法的请求

常见的状态码:

状态码意义解释
100Continue客户端继续发送请求。即客户端的部分请求已被服务器接收,客户端需要发送剩余部分请求。
101Switching Protocols服务其已经理解客户端的请求。
200OK客户端请求成功
206partial content服务器成功处理了部分GET请求(断点续传)
300Multiple Choices被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。
404Not Found请求失败,所请求的资源未在服务器发现。
501Not Implemented服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。

四、IP地址和MAC地址

MAC地址是一个48位的硬件地址,该地址和设备是匹配的,每台机器都有一个唯一的MAC地址,用来定义网络设备的位置,主要由数据链路层负责。MAC地址的作用是为唯一的标识一台主机,用于局域网内的通信,类似于身份证号。

IP地址是一个32/128位的网络地址,由于目前使用的IPV4,所以全球的IP地址是不够分配的,所以IP地址采用的是动态分配的方式。IP地址的主要作用是寻找局域网,在网络层工作,如果不看网络层的下层,那么就可以看作是互联网在利用IP地址在通信。实际上是互联网通过IP地址查找到该主机位于那个局域网内,然后再通过MAC地址查找到具体的主机,类似于邮政编码。

为什么有了MAC地址还需要IP地址?

 上面说到MAC地址相当于人的身份证号,假如是需要通信的仅仅是中国(局域网),那是完全没有问题的,因为中国对身份证号是有限制的(格式),但如果需要再世界通信(互联网)就行不通了,因为我们不能让其他国家的人也都使用我们的格式来规定身份证号,那这种情况下该如何通信那?那就需要将格式进行转化,但世界上有那么多的国家,这个过程无疑是非常复杂的。将这个过程类比到计算的世界中,我们来回答刚才那个问题:为什么有了MAC地址还需要IP地址?

即世界上存在着各种各样的网络,他们使用不同的硬件地址(硬件地址没有统一的规格),要使这些网络能够通信那就需要复杂的转化过程,但通过用户的主机来解决这个问题,那基本是不可能的。而IP地址就是来解决这个问题的,IP采用了统一的格式,在网络上忽略了MAC地址之间的差异。

五、OSI七层模型和TCP/IP层模型

OSI七层模型包括(从下到上):物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。

TCP/IP四层模型(从下到上):网络接口层、网络层、运输层、应用层

OSI七层模型常见协议TCP/IP四层模型常见协议
应用层FTP、HTTP、DNS应用层FTP、HTTP、DNS
表示层JPEG、ASII
会话层RPC、NFS
运输层TCP、UDP运输层

TCP、UDP

网络层IP、ARP、ICMP网络层IP、ARP、ICMP
数据链路层MAC、PPP网络接口层MAC、PPP
物理层IEEE802.3、CLOCK

六、在浏览器中输入www.baidu.com,按下回车,到浏览器显示百度页面的过程

(1)域名解析。应用层,需要用到DNS协议-----域名解析协议。

(2)浏览器和服务器建立连接。运输层,需要用到TCP-----传输控制协议。

(3)浏览器向服务器发送HTTP请求。这个过程用到了每次都使用到了,但主要是HTTP协议----超文本传输协议。

(4)服务器处理请求并返回HTTP响应。

(5)浏览器接收HTTP响应。

(6)浏览器解析HTTP响应并渲染页面。

(8)浏览器和服务器断开连接(HTTP1.0采用的是短连接,即每次处理连接只吃力一个请求)。

七、HTTP1.0和HTTP1.1的区别

(1)缓存处理:HTTP1.0中主要使用header里的If-Modified-Since、Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存机制。

(2)带宽优化以及网络连接的使用:HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而浏览器却将整个对象发送过来,并且不支持断点续传;HTTP1.1允许客户端请求某个资源的部分数据,并且支持断点续传(转态码码为206)。

(3)错误通知的管理:HTTP1.1在HTTP1.0中新增了24个错误转态响应码,如409(Conflict)表示请求的资源与资源当前状态发生的冲突;410(Gone)表示服务器上的某个资源被永久的删除了。

(4)Host头处理:在HTTP1.0中认为每一台服务器都绑定一个唯一的IP地址,因此,请求消息的URL中并没有传递主机名。但随着虚拟主机技术的发展,在一台物理主机上可能存在多个虚拟主机,而且这些虚拟主机和物理主机公用一个IP地址,这时使用HTTP1.0就解决不了这个问题。HTTP1.1在消息中增加了Host域。

(5)长连接:HTTP1.0使用短连接,即每次连接只完成一个请求,着样在连接和断开上就会浪费很多时间;而HTTP1.1支持长连接和请求流水线处理,在一个TCP连接上可以处理更多的请求和响应,减少了建立和关闭连接的消耗和延迟。

参考:https://www.cnblogs.com/zhangyfr/p/8662673.html

八、阻塞、非阻塞、同步、异步

阻塞:调用者在时间没有发生的时候,一直在等待时间的发生,不能去处理别的任务,如sacnf()函数。

非阻塞:调用者在事件没有发生的时候,可以处理别的任务,如printf()函数。

同步:调用者必须循环的去查看事件有没有发生这种情况就是发生,如轮询模型。

异步:调用者不必自己去查看事件有没有发生,而是等待着注册事件上的回调函数来通知自己,如信号处理函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值