计算机网络面试总结


websocket和socket的区别:
1.socket: 套接字,socket是在应用层和传输层之间的一个抽象层,把TCP/IP的复杂操作抽象为几个简单接口供应用层使用。

2.websocket:基于TCP的一种新的网络协议,和http协议一样属于应用层协议,让客户端和服务器之间进行双向实时通信的技术。

七层网络模型,

从底层到上层: 物理层-数据链路层(MAC地址、网卡的物理标识)-网络层(ip协议)-传输层-应用层(会话层,表示层,应用层)。。


网络层(主机之间):
IP协议非常简单,仅仅提供不可靠、无连接的传送服务

无连接:

是指通信之前,不需要先建立连接,直接发送数据,简化了协议。

不可靠:

不保证数据包一定能到达目的地,也不保证数据包能按顺序到达,也不保证数据包不重复。“尽力而为”的去交付。
(可靠性主要由上层TCP来保障)

IP的核心职责

1.寻址:通过ip地址,唯一标识网络中的每一台设备;
2.分段和重组:将上层传输层传来的数据包(segment)封装成ip数据包(datagram)。如果数据包大小超过了底层数据链路层最大传输单元(MTU),ip协议会将其分割成多个片段,并在目的地重新组装。
3.路由:根据目标ip地址,通过路由器选择最佳路径,将数据包转发到目的地,

1> 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;
2> 基本数据单位为IP数据报
3> 包含的主要协议:
IP协议(Internet Protocol,因特网互联协议);
ICMP协议(Internet Control Message Protocol,因特网控制报文协议);
在IP主机和路由器之间传递控制消息和差错报告。
IP协议本身不可靠,弥补IP协议的不足,提供一种反馈问题的机制。通常被认为是IP协议的一部分。
(1)差错报告: 处理IP数据包时遇到问题(超时、目标主机不可达),向源主机发送ICMP报文,
(2)网络探询: 查询和诊断网络状态,如ping。

ARP协议(Address Resolution Protocol,地址解析协议)可看成是跨网络层和数据链路层的协议; 作用:通过同一个局域网内,通过IP地址找到对应的物理地址的协议;数据包封装成数据帧,头部需要MAC地址。
ARP缓存表,提高效率。

RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
ARP的逆过程。 基本被淘汰了,BOOTP 和现在的 DHCP取代了RARP协议。

重要设备:路由器。。

IP协议如何保证数据接收完毕?
IP协议是无连接协议,不会考虑对方是否“发送完毕”。如果IP数据报被分片发送,那么只有最后一个分片的“还有分片(M)”flag置为0,之前的分片相应flag都置为1。

ip地址分类::
ip地址分网络号和主机号, ip地址由4段组成,每一段是一个字节(8位),最大值是255
网络号表示其属于互联网的哪一个网络,主机地址表示其属于该网络的哪一台主机。(主从关系)
ip共32位,4个字节,点分十进制记法。
(1)A类地址:1个字节(8位,0+7位)表示网络号,网络号取值范围1~126,一般用于大型网络
后3个字节是主机号,(子网掩码255.0.0.0)
(2)B类地址:2个字节(16位,10+14位)表示网络号
网络号取值为128~191,一般用于中等规模网络。子网掩码(255.255.0.0)
(3)C类地址:3个字节(24位,110+21位)表示网络号,网络取值192~223,一般用于小型网络,子网掩码(255.255.255.0)
(4)D类:以1110开始,用于组播(网络取值224~239,用于多路广播用户)
E特殊地址(用于科研),全1和全0保留不用。

子网掩码(subnet mask),又叫网络掩码、地址掩码、子网络遮罩,
也是32位的二进制数字,和前面的IP地址一般成对出现。
子网掩码的作用: 也是唯一作用,告诉设备,IP地址中的哪部分是网络位,哪部分是主机位。
子网掩码的原理: 通过按位与运算来实现的。 连续的1对应网络位,连续的0对应主机位。
子网掩码的表示方法,一般有2种:
(1)点分十进制法, 如:255.255.255.0; 和IP地址的格式相同。
(2)CIDR表示法(前缀长度), IP地址后面加斜杠/和数字,数字表示掩码中1的个数。
如:192.168.1.10/24 等同于 192.168.1.10 掩码 255.255.255.0(因为有24个连续的1)。

子网掩码必须结合ip地址一起使用。 作用是将某个ip地址划分为网络地址和主机地址2部分,屏蔽ip的一部分来区分网络标识和主机标识,并说明该ip在局域网还是在公网。
屏蔽ip的网络部分,A类默认子网掩码255.0.0.0


网络层和传输层的区别:
(1)网络层:只是根据网络地址将源结点发出的数据包传送到目的结点,
(2)传输层:则负责将数据可靠地传送到相应的端口。

传输层(具体的端口,具体应用):TCP、UDP
为应用进程之间提供端到端的逻辑通信。
1> 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
2> 包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议,传输的是报文)、UDP协议(User Datagram Protocol,用户数据报协议,传输的是数据报);
3> 重要设备:网关。


TCP协议

TCP应用场景:网页 邮件等等。(http、ftp、telnet、

TCP数据格式: (如下图所示)面向字节流,将信息分割成组,接收端进行重组。

TCP是基于字节流,没有边界,容易发生tcp 粘包和拆包
1.TCP粘包:指的是发送方在发送数据时,将多个逻辑上独立的数据包粘合在一起发送,导致接收方在接收时无法正确地区分这些数据包。造成TCP粘包的原因有多种,包括网络传输的延迟、缓冲区的限制、发送方的发送策略等。
多个数据包粘合在一起,形成一个大的数据包。
多个数据包合并成一个数据包,但是在接收端无法正确地解析出每个数据包。
2.TCP拆包: 发送方在发送数据时,将一个逻辑上独立的数据包拆分成多个小的数据包发送,导致接收方在接收时无法正确地组装这些数据包。TCP拆包的原因主要是由于发送方发送数据的速度过快,接收方处理数据的速度没有跟上。
一个数据包被拆分成多个小的数据包,接收方无法正确地组装这些数据包。
一个数据包被拆分成多个小的数据包,但是在接收端可以正确地解析出每个数据包。

解决TCP粘包和拆包的方式:
1.定长包:固定长度发送,根据固定的长度进行数据的解析;
2.分隔符包:发送方在发送数据时,在每个数据包的末尾添加一个特定的分隔符,接收方按照这个分隔符进行接收和解析。这样可以保证每个数据包的完整性,但是需要选择一个合适的分隔符,避免与数据内容冲突。
3.消息头部包含长度信息。即发送方在发送数据时,在每个数据包的头部添加一个固定长度的字段,表示该数据包的长度,接收方先接收这个长度字段,再根据长度字段接收相应长度的数据。这样可以确保接收方能够正确地区分和组装数据包。
4.序列化和反序列化:即发送方在发送数据之前,将数据对象序列化为字节流,接收方在接收数据之后,将字节流反序列化为数据对象。通过序列化和反序列化,可以确保数据的完整性和正确性。

报文格式:报头header+数据
TCP格式:
(1)报头 16位源端口号 + 16位目的端口号,
(2)32位序号(标识TCP发送端向TCP接收端发送的数据字节流)
(3)32位确认序号(SYN报文,ACK标志为0,没有确认序号)
(4)首部

### 计算机网络考研面试的经验总结 #### 一、基础知识准备 在计算机网络的考研面试中,通常会考察学生对基础理论的理解程度以及实际应用能力。因此,在复习过程中应重点关注以下几个方面的知识点[^1]: - **OSI七层模型与TCP/IP协议栈**:掌握各层次的功能及其对应的主要协议。 - **IP地址分类及子网划分**:熟悉IPv4和IPv6的区别,理解如何进行有效的网络规划。 - **路由算法**:深入学习距离矢量法、链路状态法等基本概念,并能解释其优缺点。 - **传输控制机制**:包括流量控制、拥塞控制等内容。 ```python # 示例代码展示简单的Socket编程实现客户端和服务端通信过程 import socket def start_server(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = 'localhost' port = 9999 server_socket.bind((host, port)) server_socket.listen(5) while True: client_socket, addr = server_socket.accept() message = client_socket.recv(1024).decode('utf-8') print(f"Received from {addr}: {message}") response = "Hello Client" client_socket.send(response.encode('utf-8')) client_socket.close() if __name__ == "__main__": start_server() ``` 以上是一个非常基础的服务端程序例子,用于演示基于Python语言下的套接字(Socket)操作原理[^2]。 #### 二、常见问题应对策略 针对可能被问到的一些典型题目提前做好充分准备是非常必要的。例如可能会涉及到以下几类问题: - 描述一次完整的HTTP请求流程? - ARP欺骗是如何发生的?怎样防范此类攻击行为的发生呢? - VLAN的作用是什么?它又是通过哪些方式来隔离广播域? 对于这些问题的回答不仅要做到条理清晰而且还要体现出自己对该领域最新动态有一定关注度[^3]。 #### 三、软实力提升建议 除了专业知识外,良好的表达能力和逻辑思维同样重要。可以通过模拟演练的形式提高临场发挥水平;另外保持自信积极的态度也是成功的关键因素之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值