计算机网络面试总结:

1.聊一聊HTTP协议吧?

2.TCP与UDP比较?

3.get和post比较及幂等性?

4.从在浏览器中输入“www.163.com”到返回页面的详细过程,越详细越好

5.手画TCP三次握手及四次挥手详细过程,以及每一步之后进入什么状态

6.网络攻击(CSRF、XSS)攻击的是?

7.域名解析有哪些类型?分别有什么作用?

8.TCP如何实现拥塞控制(过程、阈值以及流量控制)

9.聊一下OSI和TCP/IP吧!

10.HTTPS和HTTP的区别,SSL具体是什么实现?

11.说下HTTP1.0和1.1和2.0?

12.服务器如何捕捉HTTP请求?详细过程?

13.服务器如何向数据库请求数据,详细过程?

14.BIO/NIO/AIO

15.TCP/IP报头

解答

1.聊一聊HTTP协议吧?
聊一聊HTTP协议吧

2.TCP与UDP比较?

1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

3.get和post比较及幂等性?

get和post区别4点。

幂等:使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变
我们在使用get和Post需要遵守幂等的,但有些不遵守。

4.从在浏览器中输入“www.163.com”到返回页面的详细过程,越详细越好

在没有重定向时?
1.浏览器输入url
2.输入的不是IP地址需要解析过程,(浏览器缓存→系统缓存→路由器缓存→ISP DNS缓存→从根域名服务器递归搜索)
3.建立连接
4.浏览器给web服务器发送一个HTTP请求(作为第三次请求)
5.获得响应,即获得html
6.释放tcp
7.解析html并显示

如果有重定向,需要重定向跟踪,不过差不多。

5.手画TCP三次握手及四次挥手详细过程,以及每一步之后进入什么状态


6.网络攻击(CSRF、XSS)攻击的是?

根据TCP/IP的三次握手中第一次的完后需要维护未连接队列,又因为是一种稳定的连接会重复发送请求,所以攻击的是第2次请求。

7.域名解析有哪些类型?分别有什么作用?

​http://www.landui.com/help/show-5444.html​

8.TCP如何实现拥塞控制(过程、阈值以及流量控制)


9.聊一下OSI和TCP/IP吧!

1.OSI即标准网络七层模型,TCP将OSI简单化,变为4层.他们之间有对应关系。
2.TCP每一次的具体工作
3.这种模型的特点
4.模型的目的,或者说有点
5.TCP/IP涉及到的点 如 TCP协议和三次握手,四次挥手,流量控制,滑动阻塞等。

10.HTTPS和HTTP的区别,SSL具体是什么实现?

1.发展时间
2.SSL+HTTP
3.url区别
4.端口
5.效率和安全性 明文问题
6.CA证书 对称加密和非对称加密,中间人攻击 SSL握手

11.说下HTTP1.0和1.1和2.0?

1.0和1.1
1.长连接和请求的Pipelining
2.增加host字段
3.Code :100
4.Chunked transfer-coding
5.缓存控制策略
6.提高错误通知

1.1和2.0

1.二进制格式
2.完全多路复用
3.报头压缩
4.主动“推送”

12.服务器如何捕捉HTTP请求?详细过程?

13.服务器如何向数据库请求数据,详细过程?

TCP过程?

14.BIO/NIO/AIO

三者原理,各个语言是怎么实现的
​​​http://stevex.blog.51cto.com/4300375/1284437​​​
Netty

Linux内核select poll epoll

15.TCP/IP报头


1.OSI七层模型和TCP/IP的四层模型

计算机网络_应用层


计算机网络_javascript_02

计算机网络_应用层_03


涉及到:​​https://www.zhihu.com/question/24002080​​ 繁星亮与鲍包包讲解

TCP/IP模型 ​​https://www.2cto.com/net/201310/252965.html​​​
他们分别干了什么工作
OSI模型

应用层:应用软件使用的协议,如,POP3,SMTP,Telnet,DHCP,DNS,Http.规定应用软件如何去进行通信的。

表示层:决定数据的展现(编码)形式.

会话层:为两端通信实体建立连接(会话),中间有认证鉴权以及检查点记录(会话中断继续)

传输层:将一个数据/文件斩件分成很多小段,标记该应用程序使用的端口号及提供QOS

网络层:路由选路,选择本次通信使用的协议,路由策略及访问控制策略(IP在这一层)

数据链路层:根据端口与MAC地址,做分组(VLAN)隔离、端口安全、访问控制。(MAC地址在这一层)处理VLAN内的数据帧转发,跨VLAN间的访问,需要上升到网络层。

物理层:将数据最终编码为用0、1标识的比特流,然后传输。

举例:

两主机通信的过程,从发送者(以下简称A)到接收者(以下简称B),属于从7层(应用层)->1层(物理层)封装,然后传输到远端,再从1层(物理层)->7层(应用层)解封装的过程。
1、 当A打开了QQ这个软件,相当就到达应用层了;因为软件会根据你的操作调动机器底层的硬件工作了。
2、 当A往QQ这个软件的聊天窗口里面输入信息,发出后,QQ会将这个信息保存在本地聊天记录文件MSGEX.db(一般就保存在QQ目录下以你的QQ号码为文件夹里)。以某种格式编码/保存某种信息,这可以理解为表示层了。
3、 当A打开与B的聊天窗口,输入信息,按下“输入”按钮,用户的操作就完结了,剩下都是机器自己的操作了。实际传输之前QQ会先建立A与B的会话连接,才真正开始传输信息/数据(你可以理解借传输文件理解:你发送文件给对方,要等待对方按下接收,才算建立了会话,然后才开始传输。)这算会话层了。
4、 会话建立后,会将A发的信息斩件,如A发送“你吃了饭没有”?传输层将这句话斩成“你”“吃”“了”“饭”“没”“有”6个数据段,标记号使用的端口号,然后准备发出去。
5、 接上一层,信息还未发出去,这时候在网络层做路由选路,可以理解为,从A家出去,可以分别经“联通”“电信”“移动”3个网络中的一个再到B家。网络层根据路由协议负责选路(根据链路质量、带宽、开销等方法论)。假设最后选了2条,可能就A->联通->B发送“你”“吃”“了”3个数据段,A->电信->B发送“饭”“没”“有”3个数据段。选路后,这一层要标记IP包头,包头主要内容是源IP地址,目的IP地址,使用什么协议。其中源、目的IP相当于你寄信的时候的收发的地址与邮政编码,标记出发送者与接收者。而协议相当于这封信到底用什么语言书写。(只有保证2端使用同种语言,才能确保通信起来,否则你用英文写信给大妈,大妈怎么看得懂呢?)
6、 然后再到数据链路层,数据链路层主要是负责同一个子网内的通信的。例如A、B连接在同一台二层交换机,就属于同一个子网,那么数据帧的通信室是不需要通过网络层的(即三层交换机或者路由器),直接在这台二层交换机就过去了。这一层打的是MAC地址的帧头,对于上述通信过程来说,就是为数据帧打上A的机器的MAC与A的网关的MAC。这一层的工作就完成了。
7、 最后一层了,经过上述斩件、打完各层标签后的6个数据帧,物理层将他们翻译文6段0、1表示的比特流,然后通过光纤、铜缆进行传输。
8、 当比特流传输到了远端,接着B的机器按照上述的1~7的步骤反方向运行一次即可(即有物理层到应用层)。就是一层层读取标签,传输给标签标记着的相应对象,然后摘除标签,再读取上一层标签,直到最后B的应用程序能够读到A往应用程序输入的数据为止。

TCP/IP
应用层层:TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。  
应用层面向不同的网络应用引入了不同的应用层协议
传输层:这一层的的功能主要是提供应用程序间的通信,TCP/IP协议族在这一层的协议有TCP和UDP
网际层:是TCP/IP协议族中非常关键的一层,主要定义了IP地址格式,从而能够使得不同应用类型的数据在Internet上通畅地传输,IP协议就是一个网络层协议。
网络接口层: 这是TCP/IP软件的最低层,负责接收IP数据包并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层

关键点:

下层为上层提供传输服务,不关心上层传输的内容,而上层也不关心下层传输的手段,只期望能将信息最终发到通信对端的相应层次.虽然设计上是下层和上层是服务和被服务的关系,互相不关心实现细节,实际上出于这样或那样的原因,多少还会有一些相关性,并不完全独立,但是层次结构还是明确的

就是用最少的资源,准确快速的把信息传送到对端去