计算机网络知识整理

 一 OSI与TCP/IP各层的结构与功能,都有哪些协议

五层协议的体系结构

学习计算机网络时我们一般采用折中的办法,也就是中和OSI和TCP/IP的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。

 

二 ICMP协议到底属于哪一层

ping命令就是利用的ICMP协议;

ICMP协议是IP层的附属协议,是介于IP层和TCP层之间的协议,一般认为属于IP层协议;

ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅;
Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。

三 TCP与UDP的主要特点和区别

  

UDP的主要特点

  1. UDP是无连接的;
  2. UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这里面有许多参数);
  3. UDP是面向报文的;
  4. UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等);
  5. UDP支持一对一一对多多对一多对多的交互通信;
  6. UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

 

TCP的主要特点

  1. TCP是面向连接的。(就好像打电话一样,通话前需要先拨号建立连接,通话结束后要挂机释放连接);
  2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一);
  3. TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达;
  4. TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;
  5. 面向字节流。TCP中的“流”(stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流

TCP与UDP的区别

四 TCP三次握手与四次挥手

为什么要传回SYN

接收端传回发送端所发送的SYN是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。

就像钉钉发送完消息,对方显示已读(即已收到)一样,表示已经看过了这条消息。

 

传了SYN,为啥还要传ACK

双方通信无误必须是两者互相发送信息都无误。传了SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要ACK信号来进行验证。

就像在钉钉上,给别人发消息说你吃饭了没,消息显示已读,但需要对方回复确认信息才知道是否吃饭了。

 

为什么要四次挥手

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。

举个例子:A和B打电话,通话即将结束后,A说“我没啥要说的了”,B回答“我知道了”,但是B可能还会有要说的话,A不能要求B跟着自己的节奏结束通话,于是B可能又巴拉巴拉说了一通,最后B说“我说完了”,A回答“知道了”,这样通话才算结束。

 

 

五 TCP协议如何保证可靠传输

  1. 应用数据被分割成TCP认为最适合发送的数据块

  2. 超时重传: 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

  3. TCP给发送的每一个包进行编号接收方对数据包进行排序,把有序数据传送给应用层。

  4. 校验和: TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。

  5. TCP的接收端丢弃重复的数据。

  6. 流量控制: TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用的流量控制协议可变大小的滑动窗口协议。 (TCP利用滑动窗口实现流量控制

  7. 拥塞控制: 当网络拥塞时,减少数据的发送。

  8. 停止等待ARQ协议(stop and wait) 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。

停止等待协议

  • 停止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。

  • 为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输;流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停下来等待对方确认。这样可使信道上一直有数据不间断的在传送。这种传输方式可以明显提高信道利用率。

超时重传

停止等待协议中超时重传是指只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。

因此每发送完一个分组需要设置一个超时计时器,其重转时间应比数据在分组传输的平均往返时间更长一些。

这种自动重传方式常称为自动重传请求ARQ;另外在停止等待协议中若收到重复分组,就丢弃该分组,但同时还要发送确认。

连续ARQ协议(流水线传输)可提高信道利用率。发送维持一个发送窗口,凡位于发送窗口内的分组可连续发送出去,而不需要等待对方确认接收方一般采用累积确认对按序到达最后一个分组发送确认,表明到这个分组位置的所有分组都已经正确收到了。

滑动窗口

TCP利用滑动窗口实现流量控制的机制。

发送窗口里面的序号表示允许发送的序号。

发送窗口后沿后面部分表示已发送且已收到确认,而发送窗口前沿的前面部分表示不允许发送

发送窗口后沿的变化情况有两种可能,即不动(没有收到新的确认)和前移(收到了新的确认)。

发送窗口的前沿通常是不断向前移动的;一般来说,我们总是希望数据传输更快一些;但如果发送方把数据发送的过快,接收方就可能来不及接收,这就会造成数据的丢失。

所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收的前提让数据传输更快

 

流量控制

流量控制是为了控制发送方发送速率,保证接收方来得及接收,让数据传输尽可能的快

接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

 

TCP 滑动窗口协议,窗口过大或过小有什么影响?

滑动窗口的大小对网络性能有很大的影响。

如果滑动窗口过,极端的情况就是停止等待协议(stop-and-wait),发一个报文,等一个 ACK,会造成通信效率下降。

如果滑动窗口过,网络容易拥塞,容易造成接收端的缓存不够而溢出,容易产生丢包现象,则需要多次发送重复的数据选择重传协议selective repeat,耗费了网络带宽。

六 打开一个网页,整个过程会使用哪些协议

图片来源:《图解HTTP》

 七 状态码

八 各种协议与HTTP协议之间的关系

图片来源:《图解HTTP》

九 HTTP长连接、短连接

HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头设置Connection: keep-alive

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接

建议

非常推荐大家看一下 《图解HTTP》 这本书,这本书页数不多,但是内容很是充实,不管是用来系统的掌握网络方面的一些知识还是说纯粹为了应付面试都有很大帮助。下面的一些文章只是参考。

 

来源:

https://www.toutiao.com/a6693804569769542155/?tt_from=android_share&utm_campaign=client_share&timestamp=1558572313&app=news_article_lite&utm_medium=toutiao_android&req_id=20190523084513010023019100055F559&group_id=6693804569769542155

猜你喜欢

转载自www.cnblogs.com/theRhyme/p/10911593.html