网络编程面试题

1.TCP/IP模型

TCP/IP模型实际上是OSI模型的一个浓缩版本,它只有四个层次:
应用层:对应这OSI的应用层、表示层、会话层
传输层:对应着OSI的传输层
网络层:对应着OSI的网络层
网络接口层:对应着OSI的数据链路层和物理层
OSI模型的网络层同时支持面向连接和无连接的通信,但是传输层只支持面向连接的通信;TCP/IP模型的网络层只提供无连接服务,但是传输层同时提供两种通信模式。

2.关于TTL

time To Live
数据包在传输过程中没经过一个路由器,TTL就减1,直到TTL=0,数据包被丢弃,并发送ICMP报文通知源主机防止重复发送。

3.ping和tracert命令用ICMP协议

4.MTU是最大的传输单元

由于不同的硬件的物理特性不同,对数据帧的最大长度都有不同的限制,这个最大长度成为MTU(然后通过路由对IP报文进行分片完成传输)

5.三次握手

①部分报头信息声明
seq:序列号,表示数据第一个字节的序号
ack:确认序列号,表示期望收到的第一个字节的序号
FLAG位
常用的由SYN、ACK、FIN。
SYN:用作建立连接时的同步信号。
ACK:用作对收到的数据进行确认。
FIN:表示后面没有数据需要发送,连接需要关闭。
②握手过程
第一次握手:客户端发送数据包将SYN置1,表示希望建立连接,seq=x,发送完后进入SYN_SEND状态。
第二次握手:服务器收到请求之后,通过SYN确认是建立连接请求,然后发送一个响应包,将SYN=1,ACK=1 SEQ=Y ACK=X+1,然后进入SYN_RCVDZ状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端服务器进入ESTABLISHED状态,完成三次握手。

6.为什么要三次握手

保持信息对等
防止请求超时导致脏连接

7.两次握手会怎么样

如果两次握手就创建连接,传输完数据并释放连接后,第一个超时的连接请求才到达服务器,服务区会认为是客户端创建新连接的请求,然后创建连接,此时客户端的状态不是SYN_SENT,所以会直接丢弃服务器传过来的确认数据,导致最后只是服务器单方面建立了连接。

8.四次挥手

客户端想要关闭连接,然后发送FIN信号带上seq信息给服务器,服务器应答ACK告诉客户端可以断开,但是要等我把数据发送完整,注意这时候客户端进入FIN_WAIT_2状态。
服务器将数据发送完后发送FIN+ACK给客户端,告诉客户端OK了,然后自己进入CLOSE_WAIT状态。
客户端收到后,给服务器发送ACK确认收到,然后自己进入TIME_WAIT状态,经过2MSL,客户端没有收到服务器传来的报文,则确认没有收到服务器传来的报文,则确定服务器已经收到最后的ACK信号,连接正式释放。
为什么 不直接关闭而是进入TIME_WAIT呢?
客户端要确认服务器能收到ACK信号。(如果不确定这一点,服务器会认为客户端没有收到自己的FIN+ACK报文,所以会重发)
防止失效请求(为了防止已失效的连接请求数据包和正常的混淆)

9.TCP和UDP的区别

TCP面向连接,UDP面向非连接
TCP提供可靠的服务(数据传输无差错,不丢失,不重复,按序到达),UDP不可靠
TCP面向字节流,UDP面向报文
TCP数据传输慢,UDP数据传输快
TCP首部开销20字节,UDP8字节

10.常用端口以及对应的服务

11.在浏览器中输入网址之后执行会发生什么?

DNS解析,找到对应的ip地址
客户端发起http/https请求,然后交给传输层
传输层将请求分成报文段,添加目标源和端口并随机用一个本地接口封装进行报头,然后交给网络层。
网络层加上双方ip地址信息,并负责路由分发。
链路层中,包通过链路层发送到路由器,通过邻居协议查找给定的IP地址的MAC地址,然后发送ARP请求查找目的的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包进行传输了,然后发送IP数据包到达服务器的地址

12.ip地址的分类

A类地址:以0开头,第一个字节范围:0~127(1.0.0.0-126.255.255.255);
B类地址:以10开头,第一个字节范围:128~191(128.0.0.0-191.255.255.255);
C类地址:以110开头,第一个字节范围:192~223(192.0.0.0-223.255.255.255)
内部地址:10.0.0.0-10.255.255.255,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255。

13.ARP是什么协议,简单语言解释一下工作原理

地址解析协议。
每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。
当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己觉得MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。

14.DHCP协议有什么作用

一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

15.子网掩码的作用

子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
通过IP和子网掩码计算网络号
计算出IP二进制和子网掩码的二进制,然后取余

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值