计算机专业保研面试复习笔记——计算机网络

文章目录

  • 三种协议
    • 五层协议
      • 应用层(对应七层协议中的应用层、表示层、会话层)
      • 运输层
        • 传输控制协议TCP
        • 用户数据报协议UDP
      • 网络层
      • 数据链路层
      • 物理层
    • 概念汇总
      • 对等层
      • 协议栈
      • 实体
      • 协议
  • 域名系统
  • HTTP
    • HTTP中GET和POST的区别
  • TCP与UDP
    • TCP
    • UDP
    • TCP与UDP的区别
    • TCP实现可靠传输的方式
      • 停止等待协议
      • 流量控制
      • 拥塞控制
    • TCP建立连接(三次握手)
      • 三次握手最后一次确认的原因
    • TCP连接释放(四次挥手)
      • 关闭的时候比连接多一次握手的原因
      • 关闭时客户端需要进入TIME_WAIT状态,经过2MSL(最大报文段生存时间)才能关闭的原因
  • 网络层、IP
    • IP地址
      • A类地址
      • B类地址
      • C类地址
      • D类地址
      • E类地址
      • 255.255.255.255
      • 0.0.0.0
      • 127.0.0.X
    • 子网掩码
  • **Cookie 和 Session的区别**
    • 应用场景
    • 存储位置
    • 安全性


三种协议

计算机专业保研面试复习笔记——计算机网络_第1张图片

OSI七层协议理论比较完整,但既复杂又不实用。TCP/IP协议得到了广泛的应用。学习计算机网络时采用OSI和TCP/IP折中的方式,设计了一种只有五层协议的体系结构便于学习。

五层协议

应用层(对应七层协议中的应用层、表示层、会话层)

通过一台主机内进程间的交互来完成特定网络应用,包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol),数据单位为报文

运输层

提供的是两台主机中进程间的通用数据传输服务。由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。

运输层包括两种协议:

传输控制协议TCP

提供面向连接、可靠的数据传输服务,数据单位为报文段;TCP 主要提供完整性服务。

用户数据报协议UDP

提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。UDP 主要提供及时性服务。

网络层

为主机间提供数据传输服务,而运输层协议是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组或包。在TCP/IP体系中,网络层使用IP协议,因此分组也叫做IP数据报。

数据链路层

网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的结点之间提供服务数据链路层把网络层传来的分组封装成帧,在两个相邻结点间的链路上传送帧。

物理层

考虑的是怎样在物理媒体上传输数据比特流,而不是指具体的物理媒体(传输媒体指双绞线、同轴电缆等)。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

概念汇总

对等层

两个相同层次的层之间,好像把数据通过水平虚线直接传递给对方,就叫做对等层。

协议栈

因为几个层次画在一起很像一个栈的结构。

实体

实体是任何可发送或接收信息的硬件或软件进程。

协议

协议是控制两个对等实体进行通信的规则的集合。

在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本协议,还需要使用下面一层所提供的服务。

协议是“水平的”,即协议是控制对等实体之间通信的规则。但服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。


域名系统

域名系统(Domain Name System缩写 DNS)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。


HTTP

超文本传输协议HTTP(HyperText Transfer Protocol),HTTP是面向事务的应用层协议。定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。HTTP是万维网上能够可靠地交换文件的重要基础。

HTTP中GET和POST的区别

1、从原理性看:

GET用于信息获取,而且应该是安全的;POST请求表示可能修改服务器上资源的请求。

2、从表面上看:

GET请求的数据会附在URL后面,POST的数据放在HTTP包体,POST安全性比GET安全性高。


TCP与UDP

TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。

TCP

传输控制协议 TCP(Transmission Control Protocol)

  1. 有连接的
  2. 每一条 TCP连接只能是点对点的(一对一)
  3. 提供可靠交付
  4. 全双工通信
  5. 有流量控制,拥塞控制,面向字节流

UDP

用户数据报协议 UDP(User Datagram Protocol)

  1. 无连接的
  2. 尽最大可能交付
  3. 面向报文,对于应用程序传下来的报文不合并也不拆分
  4. 没有拥塞控制
  5. 支持一对一、一对多、多对一和多对多的交互通信
  6. 只是添加 UDP 首部,且首部开销小

TCP与UDP的区别

  1. TCP提供面向连接的传输;UDP提供无连接的传输

  2. TCP提供可靠的传输(有序,无差错,不丢失,不重复);UDP提供不可靠的传输。

  3. TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组;UDP是面向数据报的传输,没有分组开销。

  4. TCP提供拥塞控制和流量控制机制;UDP不提供拥塞控制和流量控制机制。

  5. TCP只能是点对点的(一对一)。UDP支持一对一、一对多、多对一和多对多的交互通信。

TCP实现可靠传输的方式

停止等待协议

每发送一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

流量控制

让发送方的发送速率不要太快,要让接收方来得及接收。

拥塞控制

防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

四种算法:

  • 慢开始:由小到大逐渐增大拥塞窗口,每经过一个传输轮次,拥塞窗口加倍
  • 拥塞避免:每经过一个传输轮次,拥塞窗口加1
  • 快重传:立即发送确认,让发送方尽早知道发生了个别报文段的丢失
  • 快恢复:只是丢失个别的报文段时可以执行快恢复,调整限制到原拥塞窗口的1/2

TCP建立连接(三次握手)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JnEbxnPb-1603252392559)(https://pics1.baidu.com/feed/d8f9d72a6059252d20d93b0a6645fb3e59b5b9d2.jpeg?token=c86d4509157378798ebbccbe843486d1&s=9746F8123F5754CA48D574DA0300D0B2)]

三次握手的目的是同步连接双方的序列号和确认号并交换TCP窗口大小信息。

  1. 第一步:源主机A的TCP向主机B发出连接请求报文段,其首部中的SYN(同步)标志位应置为1,并发送一个同步序列号SEQ=x表示想进行同步。发送完毕后进入SYN-SENT(同步已发送)状态。SYN置为1会消耗掉一个序号,所以下一次源主机A的TCP向主机B发送报文的seq应为x+1。
  2. 第二步:**目标主机B的TCP收到连接请求报文段后,如同意,则发回确认。**在确认报中应将ACK位和SYN位置1,表示客户端的请求被接受。确认号应为ack=x+1(即为101),同时也为自己选择一个序号即seq=y。发送完毕后进入SYN-RCVD(同步收到)状态。
  3. 第三步:源主机A的TCP收到目标主机B的确认后要向目标主机B给出确认,其ACK置1,确认号ack=y+1,而自己的序号seq=x+1。(TCP的标准规定,SYN置1的报文段要消耗掉一个序号。)发送完毕后进入ESTABLISHED(已建立连接)状态。
  4. 源主机B收到确认后也进入ESTABLISHED(已建立连接)状态。

三次握手最后一次确认的原因

防止第一次A向B的请求滞留在网络中,导致造成错误的连接。

即如果只有两次确认,第一次请求滞留在了网络中,在延误到以后的某个时间发给B后,B会直接进入已连接状态,者会造成问题。如果有最后一次确认,则在B收到滞留的请求并回复之后,A不会对B的回复做出回复,进而不会建立连接。

TCP连接释放(四次挥手)

img

  1. 第一步:客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,表示要停止。其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。( TCP规定,FIN报文段即使不携带数据,也要消耗一个序号)

  2. 第二步:服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。

    客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。

  3. 第三步:服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

  4. 第四步:客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。

关闭的时候比连接多一次握手的原因

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。但此时Server端还有部分数据需要发送。只有等到Server端所有的报文都发送完了,才能发送FIN报文,因此不能一起发送。故需要四步握手。

关闭时客户端需要进入TIME_WAIT状态,经过2MSL(最大报文段生存时间)才能关闭的原因

因为网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。如果Client立即关闭,则接收不到ACK丢失后Server重发的FIN报文。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Server如果没有收到ACK,将不断重复发送FIN片段。MSL指一个片段在网络中最大的存活时间,**2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,**则结束TCP连接。


网络层、IP

IP地址

A类地址

A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位。A类适用的类型为大型网络,A类网络地址数量较少,有126个网络,每个网络支持的最大主机数为256的3次方-2=16777214台;

B类地址

B类IP地址由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识的长度为16位。B类适用的类型为中型网络,B类网络地址数量适中,有16384个网络,每个网络支持的最大主机数为256的2次方-2=65534台;

C类地址

C类IP地址由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位。C类适用的类型为小型网络,C类网络地址数量较多,有209万余个网络,适用于小规模的局域网络,每个网络支持的最大主机数为256的1次方-2=254台。

计算机专业保研面试复习笔记——计算机网络_第2张图片

D类地址

D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,作为组播地址(一对多的通信)。

E类地址

E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用。

255.255.255.255

受限的广播地址。一般的广播地址(直接广播地址)能够通过某些路由器(当然不是所有的路由器),而受限的广播地址不能通过路由器。

0.0.0.0

是一个保留地址,意思是**“本网络”**。

127.0.0.X

网络号为127保留作为本地软件的环回地址,用于本地软件环回测试本主机的进程之间的通信。若主机发送一个目的地址为环回地址的IP数据包,则主机中的协议软件就处理数据报中的数据,而不会把数据报发送到其他网络。

子网掩码

不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位的“与”运算,就可以得到网络地址。

A类IP地址的子网掩码为255.0.0.0

B类IP地址的子网掩码为255.255.0.0

C类IP地址的子网掩码为255.255.255.0


Cookie 和 Session的区别

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样

应用场景

  1. 记住密码-cookie:我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动填写登录信息(比如用户名密码);
  2. 记住登录-cookie:一般的网站都会有记住登录,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中;
  3. 不同网页记录用户状态-session:登录一次网站后访问网站其他页面不需要重新登录。Session 的主要作用就是通过服务端记录用户的状态。

存储位置

Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。

安全性

Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

你可能感兴趣的:(研究生复试,计算机网络,面试)