计网总结

计算机网络常见面试题总结 - CSDN博客

常见面试题整理--计算机网络篇 - midiyu - 博客园

计算机网络之面试常考_笔经面经_牛客网

为什么连接的时候是三次握手,关闭的时候却是四次握手? 

关闭连接时,当服务器端收到FIN报文时,很可能并不会立即关闭连接,所以只能先回复一个ACK报文,告诉客户端端,”你发的FIN报文我收到了”。只有等到我服务器端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。


TCP的三次握手过程?

“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。 client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”。主要目的防止server端一直等待,浪费资源。


ARP协议的工作原理(发送请求是广播,响应是单播)

    首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。


 IP地址的分类

A类地址:以0开头,第一个字节范围:1~127;

B类地址:以10开头,第一个字节范围:128~191;

C类地址:以110开头,第一个字节范围:192~223;

D类地址:以1110开头,第一个字节范围为224~239;


TCP报文首部:

SYN:建立连接;

FIN:关闭连接

ACK:响应

PSH: 表示有 DATA数据传输

RST: 表示连接重置。


  常见的路由选择协议,以及它们的区别

常见的路由选择协议有:RIP协议、OSPF协议。

RIP协议:底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。

OSPF协议:底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。


TCP的可靠性如何保证?

   TCP的可靠性是通过顺序编号和确认(ACK)来实现的。


 HTTP协议包括哪些请求?

GET:请求读取由URL所标志的信息。

POST:给服务器添加信息(如注释)。

PUT:在给定的URL下存储一个文档。

DELETE:删除给定的URL所标志的资源。



TCP三次握手和四次挥手的全过程

三次握手:

(简化说:第一次:客户端发送syn包到服务器,等待确认;第二次:服务器收到syn包,确认,并再发送一个syn包+ACK包;第三次:客户端收到服务器的syn+ack包,向服务器发送ack确认包)

  第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

  第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

  第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

  握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

四次挥手(简化说,第一次:主动关闭方发送一个FIN,关闭主动方到被动方的数据传送;第二次:被动关闭方收到FIN包,发送一个ACK;第三次:被动关闭方发送一个FIN,关闭被动方到主动方的数据传送;第四次:主动关闭方收到FIN,发送一个ACK确认)

  与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。

  第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。

第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。


网络体系结构分层:

TCP/IP模型:(4层)应用层、运输层、网络层、网络接口层

5层模型:应用层(报文)、运输层(报文段/用户数据报)、网络层(分组/包)、数据链路层(帧)、物理层(比特)

OSI(7层):应用层、表示层、会话层、运输层、网络层、数据链路层、物理层

应用层:HTTP、FTP、TELNET、SMTP、DNS、SNMP、POP3

运输层:TCP、UDP

网络层:IP、ICMP、ARP、RARP


TCP和UDP区别?各自有什么运输层协议?

TCP:可靠传输、面向字节流、面向连接,

UDP:不可靠、面向数据报、无连接

TCP和UDP最主要的区别是TCP是可靠传输的,UDP是不可靠传输的。所以如果我们的发送消息之类的场景,因为你要确保用户的消息不会丢失,需要使用TCP协议。如果你是在进行视频聊天或者看直播,那你可以使用UDP协议,因为即使几个画面丢失了,对用户来说影响也不是很大。

协议:

TCP:http、pop3(用于读邮件的)、ftp、smtp(简单邮件传输协议)、telnet

UDP: SNMP(简单网络管理协议)、DNS


网络层:

ARP(地址解析协议):IP地址===>物理地址,发送请求用广播,响应用单播

RARP:逆地址解析协议:硬件地址==>IP地址

ICMP:网际控制报文协议

对AS有

IGB(内部网关协议):RIP(基于距离向量的路由选择,基于UDP,大于15就丢失)、OSPF(最短路径优先)


TCP可靠传输工作原理:

1、停止等待协议

2、连续ARQ协议:对按序到达的最后一个分组发送确认

滑动窗口协议:用于网络数据传输时的流量控制,以避免拥塞发生。该协议允许发送方在停止并等待确认前发生多个数据分组(发送方不必每发一个分组就停下来等待确认,可加速数据传输,提高网络吞吐量)

TCP的拥塞控制方法:

慢开始:每经过一次传输轮次,cwnd加倍,设置慢开始门限,到达门限,则==>拥塞避免

(逐步增大发送方的拥塞窗口cwnd,使分组注入到网络的速率更合理)

拥塞避免:每经过一次传输轮次,cwnd+1(使cwnd按线性规律缓慢增大)

快重传:当发生丢失时,发送方会收到接收方的3次重复确认,后立即重传

快恢复:收到3个重复确认后,将慢开始门限减半,再执行拥塞避免+1+1


什么是https协议?https协议用到了哪种密钥?

http无三次握手,它本身是无连接的。

https是在http上面套了一层ssl,用来实现安全连接。用到的密钥有对称密钥和非对称密钥。目前基本上大一点的网站,都会使用https,这里面涉及的知识点也不是很多,但是过程相对来说会复杂一点,感兴趣的话可以去看一下。基本上就是有数字证书,然后把对称密钥作为消息内容,通过非对称密钥来进行传输。之后双方的通信就通过对称密钥来进行解密就行了。

第一次握手的时候的非对称加密用到数字证书吧 之后的对称加密就是通过服务器的公钥和私钥


什么是socket?

socket是用来进行网络通信的,java里面已经有封装好这个类了,分为客户端和服务器,通过ip+端口来进行访问。如果没有用过socket的话,建议你到网上找一个demo,跟着写一下,你基本上就知道socket怎么用了,算是比较简单的。


什么是IO,什么是NIO,什么是AIO,什么是netty框架?

如果我上面那个问题,你自己有到网上找一个例子去写一下,你就会发现在socket在读取消息的时候阻塞的。这里有一个概念,阻塞。如果你不知道什么是阻塞函数的话,需要去了解一下。

NIO就是非阻塞IO,用来解决上面读取消息的时候会阻塞的问题。在jdk1.4左右引入的,是通过selector、buffer、通道等组件来实现的,具体实现原理我觉得还是需要有所了解的。

AIO就是异步非阻塞IO。咱们上面说的NIO是同步阻塞IO。AIO是异步的,NIO是同步的。同步和异步是什么区别我有点讲不清楚,如果这个你不懂自己去查一下资料。异步基本上就是通过回调来实现的。AIO是在jdk1.7左右引入的,面试官问AIO一般也会问得比较少。

netty是用来实现非阻塞IO的一个框架,这个作为拓展点,感兴趣可以去了解一下。我在面试阿里的时候被问到过,其他公司还没问过。


当你输入域名访问一个网站的时候,背后的过程是什么?

【1、得到IP地址:浏览器先尝试从浏览器缓存中获取http://www.baidu.com/对应的IP地址,如果不能获取,就使用DNS协议来获取IP。

2、通过IP地址寻址,找到目标(服务器)地址

3、使用TCP协议,建立TCP连接(3次握手)

在TCP协议中,建立TCP需要与百度服务器握手三次,你先告诉服务器你要给服务器发东西(SYN),服务器应答你并告诉你它也要给你发东西(SYN、ACK),然后你应答服务器(SYN、ACK),总共来回了3次,称为3次握手。

不过,建立TCP连接有个前提(或者说给服务器发消息有个前提):你必须能成功地把消息发到服务器上,需要用到IP协议、ARP协议和OSPF协议。

4、浏览器用HTTP协议请求网页内容

5、服务器处理请求,对请求做出HTTP响应

6、浏览器收到服务器的响应,得到HTML代码

7、渲染页面


应用层:HTTP  FTP SMTP  TELNET

运输层:UDP TCP

网络层:IP  ICMP ARP  RARP

数据链路层:IP数据报

物理层


UDP:DNS、SNMP

TCP:FTP   HTTP  SMTP  TELNET


DNS解析流程?

【DNS:端口号53,UDP协议。

1、本地客户机提出域名解析请求,查找本地HOST文件后将该请求发送给本地域名服务器;

2、当本地的域名服务器收到请求后,先查询本地的缓存,若有记录项,则本地的域名服务器直接返回查询结果;

3、若本地DNS缓存中无该记录,则本地域名服务器直接把请求发给根域名服务器,根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址;

4、本地服务器再向上一步返回的域名服务器发送请求,接受请求的服务器查询自己的缓存,若没有记录,则返回相关的下级的域名服务器的地址;

5、重复第四部,直到找到正确记录;

6、本地域名服务器把返回结果保存到缓存,以备下次使用,同时将结果返回客户机】




向下的过程中,添加下层协议所需要的首部或尾部;向上的过程中,不断拆开首部和尾部。

TCP协议:SMTP FTP POP3 Telnet HTTP

UDP协议:SNMP DNS


2类密码体制:

1、对称密钥密码体制:加密密钥和解密密钥是相同密码体制(DES)

密钥保密,算法公开

2、公钥密码体制:不同的加密密钥与解密密钥(一是因为对称密钥密码体制的密码分配问题,而是由于对数字签名的需求)(RSA、数字签名)

加密密钥PK(即公钥)对公众公开,而解密密钥SK(私钥或密钥)需要保密,但加密算法E、解密算法D公开

过程:

发送者A ==>对明文X用B的公钥PKB 和 E加密算法 ==>  加密为 密文Y  ==>通过互联网 ==> 对密文Y用B的私钥SKB 和D解密算法  ==> 明文X==>接收者B


数字签名:

A==》 对明文X用A的私钥SKA 和D算法签名  ==》 密文DSKA(X) ==> 通过互联网  ==》对密文DSKA(X) 用A的公钥PKA 核实签名和E运算 ==》明文X ==》B


Cookie:

在http服务器和客户之间传递的状态信息。

Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息。

一些 Cookie 是临时的,有些则是持续的。临时的 Cookie 只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除。持续的 Cookie 则保存在用户的 Cookie 文件中,下一次用户返回时,仍然可以对它进行调用。


Socket:套接字

用于建立网络连接,如用于TCP UDP编程

套接字又分为流套接字【socket、serversocket(TCP)】和数据报套接字【DatagramSocket、MulticastSocket】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容