网络编程面试

本文详细探讨了网络编程面试中常见的问题,涵盖了五层网络协议结构、各层的网络协议、ARP协议原理、IP与端口号、TCP与UDP的特点及区别,以及TCP的三次握手和四次挥手过程。此外,还涉及C/S和B/S模型、TCP的可靠传输机制、HTTP状态码等知识点,是网络面试的重要参考资料。
摘要由CSDN通过智能技术生成

1、谈下你对五层网络协议体系结构的理解?

物理层、数据链路层、网络层、传输层、应用层

应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。我们把应用层交互的数据单元称为报文

运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。

网络层的任务就是选择合适的网间路由和交换结点,确保计算机通信的数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报 ,简称数据报。

数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。

物理层上所传送的数据单位是比特。物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。

在这里插入图片描述

2、简单说下每一层对应的网络协议有哪些?

在这里插入图片描述

3、ARP 协议的工作原理?

根据IP地址获取MAC地址,网络层的 ARP 协议完成了 IP 地址与物理地址的映射。

当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP 列表中是否存在该 IP 地址对应的 MAC 地址:如果有,就直接将数据包发送到这个 MAC 地址;如果没有,就向本地网段发起一个 ARP 请求的广播包,查询此目的主机对应的 MAC 地址。
在这里插入图片描述
以太网帧借助ARP请求获取MAC地址,获取到MAC地址后,根据以太网帧协议,完成数据包传输

4、IP和端口号

IP唯一标识Internet上的计算机
IP可以分为IPV4和IPV6, ipv4是四个字节32位的,ipv6是十六个字节128位的

标识计算机上正在运行的进程,不同的进程有不同的端口号
端口号范围:0-65535

端口号和ip地址一起组成网络套接字Socket
ip+端口号在网络环境中,唯一表示一个进程

5、TCP 的主要特点是什么?

  1. TCP 是面向连接的。(就好像打电话一样,通话前需要先拨号建立连接,通话结束后要挂机释放连接);

  2. 每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一);

  3. TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复、并且按序到达;

  4. TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;

  5. 面向字节流。TCP 中的“流”(Stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。

6、UDP 的主要特点是什么࿱

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到C++网络编程面试题时,以下是一些常见的问题和答案: 1. 什么是套接字(Socket)? 套接字是一种用于网络通信的编程接口,它提供了一种机制,使得不同计算机上的进程可以通过网络进行通信。 2. TCP和UDP有什么区别? TCP(传输控制协议)是一种可靠的、面向连接的协议,它提供了数据传输的保证和错误检测机制。UDP(用户数据报协议)是一种不可靠的、无连接的协议,它提供了一种简单的数据传输机制。 3. 什么是阻塞和非阻塞IO? 阻塞IO是指当一个IO操作发生时,程序会一直等待直到操作完成。非阻塞IO是指当一个IO操作发生时,程序会立即返回并继续执行其他任务,而不会等待操作完成。 4. 什么是同步和异步IO? 同步IO是指当一个IO操作发生时,程序会一直等待直到操作完成,并且在操作完成后立即处理结果。异步IO是指当一个IO操作发生时,程序会立即返回并继续执行其他任务,而在操作完成后再处理结果。 5. 什么是select函数? select函数是一种多路复用IO模型,它可以同时监视多个文件描述符的可读、可写和异常事件,并在有事件发生时通知程序进行处理。 6. 什么是IO多路复用? IO多路复用是一种同时监视多个IO事件的机制,它可以通过一种或多种方式(如select、poll、epoll等)来实现。 7. 什么是TCP粘包问题? TCP粘包问题是指在TCP传输过程中,由于数据的发送和接收速度不一致,导致接收方无法正确解析出发送方发送的数据包。 8. 如何解决TCP粘包问题? 解决TCP粘包问题的方法有多种,常见的方法包括使用固定长度的消息、使用特殊字符作为消息的分隔符、在消息头部添加消息长度等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值