计算机网络面试考点汇总

1. 网络分层

   开放式系统互联参考模型(英语:Open System Interconnection Reference Model,缩写:OSI;简称为OSI模型)是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。

1.1 OSI七层模型

  1. 应用层(Application Layer) 提供为应用软件而设的接口,以设置与另一应用软件之间的通信。应用层协议的代表包括:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet。
  2. 表达层(Presentation Layer) 把数据转换为能与接收者的系统格式兼容并适合传输的格式。
  3. 会话层(Session Layer) 负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。
  4. 传输层(Transport Layer) 把传输表头(TH)加至数据以形成数据包,提供端对端的接口。传输层协议的代表包括:TCP,UDP。
  5. 网络层(Network Layer) 决定数据包的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络层协议的代表包括:IP,ICMP,RIP,OSPF,BGP,IGMP。
  6. 数据链路层(Data Link Layer) 负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。数据链路层协议的代表包括:SLIP,CSLIP,PPP,ARP,RARP,MTU。
  7. 物理层(Physical Layer) 在局部局域网上传送数据帧(data frame),它负责管理计算机通信设备和网络媒体之间的互通。
       常用的数据通信标准:标准IEEE 802.11(通常也称为WiFi),标准IEEE 802.15(无线个域网标准(WPAN),通常称为“蓝牙”)。

1.2 TCP/IP五层模型

   因特网协议栈共有五层:应用层、传输层、网络层、链路层和物理层。不同于OSI七层模型,这也是实际使用中使用的分层方式。相较于OSI七层模型,少了表达层和会话层这两层。

2. TCP/UDP协议

   TCP (Transmission Control Protocol)协议和UDP(User Datagram Protocol)协议是TCP/IP协议的核心,属于传输层协议。

2.1 TCP 和 UDP 有什么区别?

   TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接之后才能传输数据。TCP提供超时重发、丢弃重复数据、检验数据、流量控制等功能,保证数据能从一端传到另一端。
   UDP是用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

书上的一个很形象的比喻:

   TCP连接就像打电话,两者之间必须有一条不间断的通路,数据不到达对方,对方就一直在等待,除非对方直接挂电话。先说的话先到,后说的话后到,有顺序。
   UDP就像寄一封信,发信者只管发,不管到。但是你的信封上必须写明对方的地址。发信者和收信者之间没有通路,靠邮电局联系。信发到时可能已经过了很久,也可能根本没有发到。先发的信未必先到, 后发的也未必后到。

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

   TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接,采用4次挥手来关闭一个连接。

2.2.1 三次握手

   在TCP/IP协议中,TCP协议提供可靠的连接服务,采用3次握手建立一个连接。
   三次握手
   第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。(SYN:同步序列编号(Synchronize Sequence Numbers))
   第二次握手:服务器收到SYN包, 必须确认客户的SYN (ack=j+ 1) , 同时自己也发送一个SYN包(syn=k), 即SYN+ACK包, 此时服务器进入SYN_RECV状态。
   第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+ I), 此包发送完毕, 客户端和服务器进人ESTABLISHED状态,完成三次握手。
   完成三次握手后, 客户端与服务器开始传送数据。

2.2.2 四次挥手

   连接终止使用了四路挥手过程,在这个过程中连接的每一侧都独立地被终止。当一个端点要停止它这一侧的连接,就向对侧发送FIN,对侧回复ACK表示确认。因此,拆掉一侧的连接过程需要一对FIN和ACK,分别由两侧端点发出。
四次挥手
   第一次挥手:客户应用进程发出一个关闭连接命令,FIN 标志位置为1的包,表示自己已经没有数据可以发送了,但是仍然可以接受数据。发送完毕后,客户端进入 FIN_WAIT_1 状态。
   第二次挥手:当服务器接收到该报文段后,向客户端发送一个确认包,表明自己接受到了客户端关闭连接的请求,但还没有准备好关闭连接。发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2 状态,等待服务器端关闭连接。
   第三次挥手:然后,服务器端准备好关闭连接时,发送它自己的终止FIN报文段。发送完毕后,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个ACK。
   第四次挥手:最后,客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT状态,等待可能出现的要求重传的 ACK 包。服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。
   客户端在 TIME_WAIT状态,需要等待某个固定时间(两个最大段生命周期,2MSL—Maximum Segment Lifetime),保证客户端发送的ACK报文段能够到达服务器,从而保证tcp连接能够进行可靠的关闭,之后自己也关闭连接,进入 CLOSED 状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值