计算机网络面试相关的重点

1.七层网络模型

答:OSI七层网络模型从上至下依次是:
┌─────┐
│ 应用层 │←第七层
├─────┤
│ 表示层 │←第六层
├─────┤
│ 会话层 │←第五层
├─────┤
│ 传输层 │←第四层
├─────┤
│ 网络层 │←第三层
├─────┤
│数据链路层│←第二层
├─────┤
│ 物理层 │←第一层
└─────┘


(1)物理层(Physical Layer):主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种

传输介质的传输速率等。

它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,

也就是我们常说的数模转换与模数转换),这一层的数据叫做比特,单位是bit比特。

 

(2)数据链路层(Datalink Layer):定义了如何让格式化数据以进行传输,以及如何让控制对物理介

质的访问,这一层通常还提供错误检测和纠正,以确保数据的可靠传输。

    交换机(二层)、网桥设备在这一层。数据链路层协议的代表包括:PPP、STP、帧中继等。

(3)网络层(Network Layer):在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选

择,Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的

层。

    网络层负责在源机器和目标机器之间建立它们所使用的路由。

路由器在该层。协议有:IP、ICMP(互联网控制报文协议)、ARP(地址转换协议)、RARP(反向

地址转换协议)。

 

(4)传输层(Transport Layer):O S I 模型中最重要的一层。定义了一些传输数据的协议和端口号

(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据

量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小

的数据,如QQ聊天数据就是通过这种方式传输的),主要是将从下层接收的数据进行分段和传输,

到达目的地址后再进行重组,常常把这一层数据叫做段。

 

传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外,

传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割。例如,以太网无法接收大

于1 5 0 0 字节的数据包。发送方节点的传输层将数据分割成较小的数据片,同时对每一数据片安

排一序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组。该过程即被称为排序。

 

(5)会话层(Session Layer):负责在网络中的两节点之间建立、维持和终止通信。会话层的功能包

括:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中

断以及通信中断时决定从何处重新发送。

 

通过传输层(端口号:传输端口与接收端口)建立数据传输的通路,主要在你的系统之间发起会话

或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。

 

(6)表示层(Presentation Layer):应用程序和网络之间的翻译官,在表示层,数据将按照网络能

理解的方案进行格式化;这种格式化也因所使用网络的类型不同而不同。表示层管理数据的解密与

加密,如系统口令的处理。可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。

例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),

而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用

一种通格式来实现多种数据格式之间的转换。

 

(7)应用层(Application Layer):是最靠近用户的OSI层,这一层为用户的应用程序(例如电子

邮件、文件传输和终端仿真)提供网络服务。

 

TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering

Model)、 因特网参考模型(Internet Reference Model)。


┌────────┐ ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│        ││D│F│W│F│H│G│T│I│S│U│ │
│        ││N│I│H│T│T│O│E│R│M│S│其│
│第四层,应用层 ││S│N│O│P│T│P│L│C│T│E│ │
│        ││ │G│I│ │P│H│N│ │P│N│ │
│        ││ │E│S│ │ │E│E│ │ │E│它│
│        ││ │R│ │ │ │R│T│ │ │T│ │
└────────┘ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
┌────────┐┌─────────┬───────────┐
│第三层,传输层 ││   TCP   │    UDP    │
└────────┘└─────────┴───────────┘
┌────────┐┌─────┬────┬──────────┐
│        ││     │ICMP│          │
│第二层,网间层 ││     └────┘          │
│        ││       IP           │
└────────┘└─────────────────────┘
┌────────┐┌─────────┬───────────┐
│第一层,网络接口││ARP/RARP │    其它     │
└────────┘└─────────┴───────────┘
  TCP/IP四层参考模型


TCP/IP协议栈是美国国防部高级研究计划局计算机网(Advanced Research Projects Agency Network

,ARPANET)和其后继因特网使用的参考模型。

ARPANET是由美国国防部(U.S.Department of Defense,DoD)赞助的研究网络。
最初,它只连接了美国境内的四所大学。
随后的几年中,它通过租用的电话线连接了数百所大学和政府部门。
最终ARPANET发展成为全球规模最大的互连网络-因特网。
最初的ARPANET于1990年永久性地关闭。

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),
TCP位于协议簇的第三层(对应OSI的第四层)。
TCP/IP通讯协议采用了4层的层级结构,
每一层都呼叫它的下一层所提供的网络来完成自己的需求。
这4层分别为:

(1)应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程

访问协议(Telnet)等。

 

(2)传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议

(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且

确定数据已被送达并接收。

 

(3)网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否

被正确接收),如网际协议(IP)。

 

(4)网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethe rnet、Serial Line等

来传送数据。

 

2.三次握手和四次挥手

 

  答:TCP的流量控制
TCP使用窗口机制进行流量控制。
连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端。
接收方发送的确认信息中包含了自己剩余的缓冲区尺寸。

剩余缓冲区空间的数量叫做窗口。

 

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个

包。

 

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP

窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

   TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

    位码即tcp标志位,有6种标示:

    SYN(synchronous建立联机)

    ACK(acknowledgement 确认)

    PSH(push传送)

    FIN(finish结束)

    RST(reset重置)

    URG(urgent紧急)

    Sequence number(顺序号码)

    Acknowledge number(确认号码)

三次握手的示意图如下:

第一次握手:
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。
第二次握手:
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

 
TCP 四次挥手
TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

 


3.TCP和UDP
答:TCP与UDP区别总结:

(1)TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

(2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

(3)TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

(4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

(5)TCP首部开销20字节;UDP的首部开销小,只有8个字节。

(6)TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

4.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协议的长连接和短连接。

5.http的报文结构

答:HTTP报文大致分为报文首部和报文主体两块,中间用空行来划分。通常,不一定有报文主体。

报文首部:包含服务器或客户端需处理的请求或响应的内容及属性。

报文主体:是应该被发送的数据。

6.get和post的区别

答:1.get是从服务器上获取数据,post是向服务器传送数据。

2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,

在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内

一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用

Request.Form获取提交的数据。

4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论

上,IIS4中最大量为80KB,IIS5中为100KB。(这里有看到其他文章介绍get和post的传送数据大

小跟各个浏览器、操作系统以及服务器的限制有关)。

5.get安全性非常低,post安全性较高。

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

7.tcp和udp分别是哪一层的

答:是传输层的。

8.同步和异步区别

答:通常,同步传输是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比

特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列(如16位或32位CRC校验码),以

便对数据块进行差错控制。所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地

规定它们的时间关系。

通常,异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个

字符的开始和结束,并以此实现数据传输同步。所谓异步传输是指字符与字符(一个字符结束到下一

个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。起始位对应于二进制

值 0,以低电平表示,占用 1 位宽度。停止位对应于二进制值 1,以高电平表示,占用 1~2 位宽

度。一个字符占用 5~8位,具体取决于数据所采用的字符集。例如,电报码字符为 5 位、ASCII码

字符为 7 位、汉字码则为8 位。此外,还要附加 1 位奇偶校验位,可以选择奇校验或偶校验方式

对该字符实施简单的差错控制。发送端与接收端除了采用相同的数据格式(字符的位数、停止位的位

数、有无校验位及校验方式等)外,还应当采用相同的传输速率。典型的速率有:9 600 b/s、19.2

kb/s、56kb/s等。

 

异步传输又称为起止式异步通信方式,其优点是简单、可靠,适用于面向字符的、低速的异步通信

场合。例如,计算机与Modem之间的通信就是采用这种方式。它的缺点是通信开销大,每传输一个字

符都要额外附加2~3位,通信效率比较低。例如,在使用Modem上网时,普遍感觉速度很慢,除了传

输速率低之外,与通信开销大、通信效率低也密切相关。

9.阻塞和非阻塞的区别

答:阻塞

阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。有人也许

会把阻塞调用和同步调用等同起来,实际上它们是不同的。对于同步调用来说,很多时候当前线程还

是激活的,只是从逻辑上当前函数没有返回而已。例如,我们在CSocket中调用Receive函数,如果缓

冲区中没有数据,这个函数就会一直等待,直到有数据才返回。而此时,当前线程还会继续处理各种各

样的消息。如果主窗口和调用函数在同一个线程中,除非你在特殊的界面操作函数中调用,其实主界面

还是应该可以刷新。socket接收数据的另外一个函数recv则是一个阻塞调用的例子。当socket工作在

阻塞模式的时候, 如果没有数据的情况下调用该函数,则当前线程就会被挂起,直到有数据为止。

 

非阻塞

 

非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回

10.常见的状态码以及原因

答:

2XX 成功

200 OK

表示从客户端发来的请求在服务器被正常处理了

204 No Content
该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。
另外,也不允许返回任何实体的主体。比如当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新。
一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。

206 Partial Content

该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。

3XX 重定向

301 Moved Permanently

永久性重定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URL。也就是说,如果已经把资源对应的URI保存为书签了,这时应该按Location首部字段提示的URI重新保存。当指定资源路径的最后忘记添加斜杠,也会产生301状态码。

302 Found
临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户能使用新的URI访问。

303 See Other
该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。303状态码和302状态码有着同样的功能,但303状态码明确表示客户端应当采用GET方法获取资源,这点和302状态码有区别。

304 Not Modified
该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304 Not Modified (服务器资源未改变,可直接使用客户端未过期的缓存)。304状态码返回时,不包含任何响应的主体部分。304虽然被划分在重定向,但和重定向没有关系。

307 Temporary Redirect
临时重定向。该状态码与302 Found有着相同的含义。尽管301、302标准是禁止POST变成GET,但实际并不遵守。307会遵照浏览器标准,不会从POST变成GET。但对于处理响应时的行为,每种浏览器有可能出现不同的情况。

4XX 客户端错误

400 Bad Request

该状态码表示请求报文中存在的语法错误。当错误发生时,需修改请求的内容后再次发送请求,浏览器会像200 OK一样对待该状态码。
401 Unauthorized
该状态码表示发送的请求需要有通过HTTP认证的认证信息。若之前已进行过一次请求,则表示用户认证失败。当浏览器初次接收到401响应,会弹出认证用的对话框。
403 Forbidden
该状态码表明对请求资源的访问被服务器拒绝了。
404 Not Found
该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。

5XX 服务器错误

500 Internal Server Error

该状态码表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时故障。
503 Service Unavailable
该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果实现得知解除以上状况需要的时间,最好写入RetryAfter首部字段再返回给客户端。
状态码和状况的不一致:不少返回的状态码响应都是错误的,但是用户可能察觉不到这一点。比如Web应用程序内部发生错误,状态码依然返回200 OK,这种情况也比较常见。
当301、302、303响应状态码返回时,几乎所有浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。

11.servlet是什么

答:Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java

编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的

类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,

Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

12.ddos攻击是什么

答:DDoS:Distributed Denial of Service,即分布式拒绝服务攻击。借助于客户/服务器技术,

将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击

的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控

程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发

动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

13.servlet里面的常见对象

答:

1. ServletContext

2. ServletConfig

3. Cookie&session

 

14.session和cookie的区别

答:session和cookie的区别主要有:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
 

猜你喜欢

转载自www.cnblogs.com/liqinzhen/p/12800876.html