面试前紧急补货——网络

1. TCP/IP 分层

应用层:ftp, e-mail,http,dns
传输层:tcp, udp
网络层:IP, ARP
链路层:驱动程序和网卡,交换机

OSI分层

7层 应用层(Application Layer)
提供为应用软件而设的界面,以设置与另一应用软件之间的通信。例如: HTTPHTTPSFTPTELNETSSHSMTPPOP3等。

6层 表示层(Presentation Layer)
把数据转换为能与接收者的系统格式兼容并适合传输的格式。

5层 会话层(Session Layer)
负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。

4层 传输层(Transport Layer)
把传输表头(TH)加至数据以形成数据报。传输表头包含了所使用的协议等发送信息。例如:传输控制协议义(TCP) 等。

3层 网络层(Network Layer)
决定数据的路径选择和转寄,它网络表头(NH)加至数据报,以形成分组。网络表头包含了网络数据。例如:互联网协议(IP) 等。

2层 数据链路层(Data Link Layer)
负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成了帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。

1层 物理层(Physical Layer) 
在局部局域网络上传送帧,它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等

2. TCP UDP

TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)
UDP:面向非连接、传输不可靠(不保证数据到达的顺序)、用于传输少量数据(数据包模式)、速度快。
详细解释: 
    TCP为两台主机提供高可靠性的数据通信。他所作的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端通信,因此应用层可以忽略所有这些细节。TCP的特点:面向连接的传输层协议,点对点的连接,可靠,全双工通信,面向字节流。
    UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必须的可靠性必须由应用层来提供。

3.1 TCP 的三次握手

 

注意一个TCP发送包的首部为:16bit 源端口号16bit 目的端口号 32 位序列号(该包的编号)32位确认序列号(用以接收方回信时的序号),其他的标志位:确认位ACK,推送位PSH,同部位SYN,终止位FIN
第一次握手:建立连接时,客户端发送syn包和一个随机序列号seq=x到服务器,并进入SYN_SEND状态,等待服务器进行确认。(syn,同步序列编号)。
第二次握手,服务器收到syn包,必须确认客户的SYN,然后服务器发送一个ACK=1, SYN=1, seq=y的随机数和ack=x+1的确认数的包发送回去。
第三次握手是客户端收到服务器端的SYN+ACK包,然后向服务器端发送确认包ack=y+1, seq=x+1, ACK=1,客户端和服务器端进入ESTABLISHED状态,完成三次握手

3.2. TCP 的四次挥手

 

第一次:首先客户端主动发送Fin=1seq=u,它等于前面已传送过去的最后一个字节的序号加1.这是A进入FIN-WAIT-1状态,等待B的确认。
第二次B收到连接后立即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号加1.然后B即进入CLOSE-WAIT状态。因而AB的这个链接现在已经断开了,这时的TCP连接处于半关闭状态,即A已经没有数据需要发送了。但B若发送数据,A还是要接受的。A收到来自B的确认之后就进入了FIN-WAIT-2状态等待B发出连接释放报文段。
第三次:若B已经没有要向A发送数据,其应用进程就通知TCP释放连接。这是B发出的连接释放报文段必须使用FIN=1.现在假定B的序号为wB还必须重复上次已发送过的确认号ack=u+1.这时B就进入了LAST-ACK状态,等待A确认。
第四次:A在收到B的连接释放之后必须对此发出确认。在确认号中把ACK1,确认号ack=w+1,而自己的序号是seq=u+1。接着A进入TIME-WAIT状态。为了保证B可以收到确认释放报文段。

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?

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

【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

4访问网站的过程

1.DNS域名解析:浏览器缓存、系统缓存、路由器、ISP的DNS服务器、根域名服务器。把域名转化成IP地址。
2.与IP地址对应的服务器建立TCP连接,经历三次握手:SYN,ACK、SYN,ACK
3.以get,post方式发送HTTP请求,get方式发送主机,用户代理,connection属性,cookie等
4.获得服务器的响应,显示页面

 

TCP/IP协议看访问yahoo网站的过程

应用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter]。此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层;

应用层:由应用层提供的 HTTP 通讯协议,将来自浏览器的数据报起来,并给予一个应用层表头,再向传送层丢去;

传送层:由于 HTTP 为可靠联机,因此将该数据丢入 TCP 封包内,并给予一个 TCP 封包的表头,向网络层丢去;

网络层: TCP 包裹包进 IP 封包内,再给予一个 IP 表头 (主要就是来源与目标的 IP ),向链结层丢去;

链结层:如果使用以太网络时,此时 IP 会依据 CSMA/CD 的标准,包裹到 MAC 讯框中,并给予 MAC 表头,再转成位串后, 利用传输媒体传送到远程主机上。

等到 Yahoo 收到你的包裹后,在依据相反方向拆解开来,然后交给对应的层级进行分析,最后就让 Yahoo WWW 服务器软件得到你所想要的数据,该服务器软件再根据你的要求,取得正确的资料后,又依循上述的流程,一层一层的包装起来, 最后传送到你的手上

5封装

 

6 httphttps的区别与联系 

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL

 

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSLSecure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS

简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPSHTTP的区别主要如下:

1https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3httphttps使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

4http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

7 http请求

 

 

猜你喜欢

转载自blog.csdn.net/baidu_34794435/article/details/79990056