21. 应用编程与网络编程(45道)***2***

2.网络编程(29道)

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

应用层

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

传输层

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

网络层

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

网络接口层

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


2.2 TCP/IP协议包括?

应用层

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

传输层

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

网络层

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

网络接口层

ARPIP 地址-> MAC地址)、RARPMAC地址 -> 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关闭即可。


2.9 TCPUDP的区别?

(1)TCP是面向连接的,UDP是面向无连接的。

(2)TCP是面向字节流的,UDP是基于数据报的。

(3)TCP提供可靠服务(正确性、顺序性),UDP提供不可靠服务。

(4)TCP程序结构复杂,占用资源多;UDP程序结构简单,占用资源少。

(5)TCP有拥塞控制;UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低,适合于实时应用,如IP电话、实时视频会议。

(6)TCP只支持一对一;UDP支持一对一、一对多、多对一、多对多。


2.10 TCPUDP分别有什么优点和缺点?

(1)TCP

优点:稳定可靠。在传输数据之前,会有三次握手来建立连接;在数据传输时,有校验和、确认、重传、序列号、窗口、拥塞控制机制;在数据传输结束后,还会有四次挥手来断开连接,节约系统资源。

缺点:效率低、占用系统资源多、易受攻击。建立连接和确认、重传、窗口、拥塞控制机制都会消耗大量时间;每台设备维护连接都会占用CPU、内存等资源;三次握手机制、确认机制导致TCP易受利用和攻击。

(2)UDP

优点:效率高、占用系统资源较少、比TCP稍安全。没有各种复杂机制,传输速度快,占用系统资源较少,被利用的漏洞也少一些。

缺点:不稳定、不可靠。没有各种复杂机制,网络质量不好时很容易丢包。


2.11 TCPUDP各自的适用场景是什么?

(1)TCP:对数据传输的质量要求较高,但对实时性要求不高时,比如HTTP、HTTPS、FTP等文件传输协议,以及POP、SMTP等邮件传输协议。

(2)UDP:对数据传输的实时性要求较高,但对质量要求不高时,比如在线视频、网络语音电话等。


2.12 TCP

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

包含241道笔试面试真题详解,还有岗位及校招介绍,简历制作、笔试准备、面试准备的经验分享,以及嵌入式软件工程师技能树解读。你想知道的所有关于嵌入式求职的问题,几乎都可以在这里找到答案。 订阅即赠送学习笔记、简历模板、面试提纲模板、内推机会,需要的同学点击我头像私信即可!

全部评论
请问网络编程有系统学习的资料推荐吗
1 回复 分享
发布于 2022-05-09 11:46
感觉有一些高频知识点没有,比如fork和vfork的区别
点赞 回复 分享
发布于 2023-10-23 17:54 四川

相关推荐

10-09 16:12
门头沟学院 Java
帅宇殿下:佬,简历写的什么
点赞 评论 收藏
分享
10-09 09:19
已编辑
沈阳农业大学 C++
修订
丿南烟丶:个人评价可以删掉 两个项目都是轮子项目,把一个转换成应用型项目,把MySQL和redis用起来 另外项目的时间可以标明一下
最后再改一次简历
点赞 评论 收藏
分享
评论
7
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务