嵌入式软件 面经 笔试题 网络编程

2.网络编程(29道) 

2.1  列举一下 OSI  协议的各种分层。说说你最熟悉的一层协议的功能。
(1)七层划分为:应用层、表示层、会话层、传输层、网络层、 数据 链路层、物理层。
(2)五层划分为:应用层、传输层、网络层、 数据 链路层、物理层。 
(3)四层划分为:应用层、传输层、网络层、网络接口层。(TCP/IP协议对应模型) 
(4)各层功能: 

应用层

在实现多个应用进程相互通信的同时,完成一系列业务处理所需的服务,比如电子邮件、文件传输、远程登录等。

传输层

为通信双方的主机提供端到端的服务,有两个不同的传输协议 TCP UDP TCP提供可靠交付,而 UDP并不能保证可靠交付。

网络层

处理分组在网络中的活动,例如分组的选路。

网络接口层

处理与电缆(或其他任何传输媒介)的物理接口细节。


2.2 TCP/IP 协议包括?

应用层

Telnet (远程登录服务)、 FTP (文件传输,使用 TCP)、 SMTP (建立于 FTP上的邮件服务)、 DNS(域名与 IP地址相互转换)等

传输层

UDP (无连接、不可靠)、 TCP(面向连接、可靠传输)

网络层

IP (为主机提供一种无连接、不可靠、尽力而为的 数据 服务)、  ICMP(主机与路由器之间传递控制信息)、 IGMP(主机与路由器之间进行组播成员信息交互)

网络接口层

ARP IP  地址-> MAC 地址)、RARP MAC地址  -> IP地址)等


2.3 TCP  通信建立和释放的过程?端口的作用?

(1)连接是三次握手,释放是四次挥手。 

(2)端口是一个软件结构,被客户进程或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口。 


2.4 IP 地址转换成物理地址的协议?反之?

答案:

(1)将IP地址转换成物理地址的协议是ARP(地址解析协议)。 

(2)反之则是RARP(反地址解析协议)。 

解读:

(1)ARP协议工作流程: 

①首先,每台主机都会在自己的ARP缓冲区( ARP Cache )中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。   

②当源主机需要将一个 数据 包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有﹐就直接将  数据 包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求 数据 包里包括源主机的IP地址、  硬件 地址、以及目的主机的IP地址。 

③网络中所有的主机收到这个ARP请求后,会检查 数据 包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此  数据 包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应  数据 包,告诉对方自己是它需要查找的MAC地址; 

④源主机收到这个ARP响应 数据 包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始  数据 的传输。如果源主机一直没有收到ARP响应 数据 包,表示ARP查询失败。 

(2)RARP协议工作流程: 

①网络上的每台设备都会有一个独一无二的硬件 地址,通常是由设备厂商分配的MAC地址。PC1从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播  数据 包,请求RARP服务器回复该PC的IP地址。 

②RARP服务器收到了RARP请求 数据 包,为其分配IP地址,并将RARP回应发送给PC1。 

③PC1收到RARP回应后,就使用得到的IP地址进行通讯。 


2.5 IP  地址的编码分为哪两部分?
IP地址由两部分组成,网络号和主机号。不过是要和"子网掩码"按位与上之后才能区分哪些是网络位哪些是主机位。 


2.6 应用程序ping 发出的是什么报文?

答案:应用程序ping发出的是ICMP请求报文。 

解读: ping的原理是利用网络上机器IP地址的唯一性,给目标IP地址发送一个 数据 包,通过对方回复的  数据 包来确定两台网络机器是否连接相通,时延是多少。 


2.7 socket 编程的流程?

(1)服务器端流程: 

函数

作用

socket()

创建套接字

bind()

绑定本地 IP地址和端口号

listen()

设置监听队列长度

accept()

等待连接

read()

接收信息

close()

关闭套接字

(2)客户端流程: 

函数

作用

socket()

创建套接字

connect()

发送连接请求

write()

发送信息

close()

关闭套接字


2.8 epoll 是什么?

(1)epoll是Linux网络编程中用于处理大批量文件描述符的机制,是对select/poll的改进。 

(2)select监听的fd是有上限的,32位处理器一般为1024;且select/poll每次调用会遍历所有fd,时间复杂度为O(n),效率太低。而epoll监听的fd数量没有限制,且能在O(1)的时间复杂度内完成操作。 

(3)epoll相关的系统调用有:epoll_creat、epoll_ctl、epoll_wait/epoll_pwait(可屏蔽特定信号),分别用来创建一个epoll文件描述符、添加/删除/修改需要侦听的文件描述符及事件、接收被侦听描述符的IO事件。epoll文件描述符用完之后直接close关闭即可。


以上内容摘自专刊《嵌入式岗位笔试面试真题讲解》,该专刊不仅有真题讲解,还有经验分享,不清楚嵌入式该学什么的同学,想找嵌入式实习/正式工作的同学,都可以来看看:                 


引流:华为、 小米 OPPO、VIVO、荣耀、一加、  CVTE、 大疆 、insta360影石、  美的 、      TCL  、 海信、创维、烽火、比亚迪  、吉利、长安、大众、经纬恒润 、小鹏、  图森未来、      百度 、 滴滴、蔚来、理想、 联发科、 紫光展锐 、全志、 寒武纪 、晶晨半导体 、汇顶、 华为、    中兴浪潮 、TP-LINK、讯飞、商汤、 海康威视 、浙江大华  、360、小马智行、元戎启行           、深信服  、移动、联通、电信、旷视 四维图新  中芯国际  、复旦微电子

XmSGaEUCmmXwODsKH6zow0nuHK7Jq19J.jpg
#嵌入式##嵌入式招聘##嵌入式面经##网络编程##软件开发薪资爆料#
全部评论
了解了更多知识,感谢
2 回复 分享
发布于 2022-10-22 19:03 陕西
知识点很详细,开冲
1 回复 分享
发布于 2022-11-02 08:16 广东
整理的很不错,谢谢
点赞 回复 分享
发布于 2022-11-07 12:03 广东
谢谢大佬分享
点赞 回复 分享
发布于 2022-11-07 10:32 河南
确实很有用
点赞 回复 分享
发布于 2022-11-04 15:01 湖南
帮助很大,感谢楼主 
点赞 回复 分享
发布于 2022-11-02 22:02 山东
感谢大佬分享
点赞 回复 分享
发布于 2022-11-02 16:20 四川
🐮
点赞 回复 分享
发布于 2022-11-01 19:56 广东
冲冲冲
点赞 回复 分享
发布于 2022-10-30 17:13 浙江
不错
点赞 回复 分享
发布于 2022-10-30 14:55 广东
知识点总结的非常全面,非常有用,感谢感谢
点赞 回复 分享
发布于 2022-10-29 23:54 黑龙江
总结的知识点很全 很有用 感谢!
点赞 回复 分享
发布于 2022-10-29 15:42 湖北
整理很清晰 非常有用处
点赞 回复 分享
发布于 2022-10-29 10:12 江苏
很有帮助,感谢大佬
点赞 回复 分享
发布于 2022-10-24 20:19 四川
帮助很大,感谢感谢
点赞 回复 分享
发布于 2022-10-24 18:05 辽宁

相关推荐

momo_校招版:给佬跪了 我周末三场都有点嫌多了
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:这些经历跟硬件都没啥关系呀
点赞 评论 收藏
分享
从输入URL到页面加载发生了什么:总体来说分为以下几个过程: 1.DNS解析 2.TCP连接 3.发送HTTP请求 4.服务器处理请求并返回HTTP报文 5.浏览器解析渲染页面 6.连接结束。简述了一下各个过程的输入输出作用:以下是对从输入 URL 到页面加载各过程的输入、输出或作用的一句话描述:DNS 解析: 输入:用户在浏览器地址栏输入的域名(如 www.example.com)。输出:对应的 IP 地址(如 192.168.1.1)。作用:将易于记忆的域名转换为计算机能够识别和用于网络通信的 IP 地址,以便浏览器与目标服务器建立连接。TCP 连接: 输入:浏览器获得的服务器...
明天不下雨了:参考一下我的说法: 关键要讲出输入网址后涉及的每一个网络协议的工作原理和作用: 涉及到的网络协议: HTTP/HTTPS协议->DNS协议->TCP协议->IP协议->ARP协议 面试参考回答: 第一次访问(本地没有缓存时): 一般我们在浏览器地址栏输入的是一个域名。 浏览器会先解析 URL、解析出域名、资源路径、端口等信息、然后构造 HTTP 请求报文。浏览器新开一个网络线程发起HTTP请求(应用层) 接着进行域名解析、将域名解析为 IP 地址 浏览器会先检查本地缓存(包括浏览器 DNS 缓存、操作系统缓存等)是否已解析过该域名 如果没有、则向本地 DNS 服务器请求解析; 本地服务器查不到会向更上层的 DNS 服务器(根域名服务器->顶级域名服务器->权威域名服务器询问)递归查询 最终返回该域名对应的 IP 地址。(应用层DNS协议)DNS 协议的作用: 将域名转换为 IP 地址。 由于 HTTP 是基于 TCP 传输的、所以在发送 HTTP 请求前、需要进行三次握手、在客户端发送第一次握手的时候、( 浏览器向服务器发送一个SYN(同步)报文、其中包含客户端的初始序列号。TCP头部设置SYN标志位、并指定客户端端口 同时填上目标端口和源端口的信息。源端口是浏览器随机生成的、目标端口要看是 HTTP 还是 HTTPS、如果是 HTTP 默认目标端口是 80、如果是 HTTPS 默认是 443。(传输层) 然后到网络层:涉及到(IP协议) 会将TCP报文封装成IP数据包、添加IP头部,包含源IP地址(浏览器)和目标IP地址(服务器)。IP 协议的作用: 提供无连接的、不可靠的数据包传输服务。 然后到数据链路层、会通过 ARP 协议、获取目标的路由器的 MAC 地址、然后会加上 MAC 头、填上目标 MAC 地址和源 MAC 地址。 然后到物理层之后、直接把数据包、转发给路由器、路由器再通过下一跳、最终找到目标服务器、然后目标服务器收到客户的 SYN 报文后,会响应第二次握手。 当双方都完成三次握手后、如果是 HTTP 协议、客户端就会将 HTTP 请求就会发送给目标服务器。如果是 HTTPS 协议、客户端还要和服务端进行 TLS 四次握手之后、客户端才会将 HTTP 报文发送给目标服务器。 目标服务器收到 HTTP 请求消息后、就返回 HTTP 响应消息、浏览器会对响应消息进行解析渲染、呈现给用户
点赞 评论 收藏
分享
评论
13
155
分享

创作者周榜

更多
牛客网
牛客企业服务