网络编程作业题目

一. 常见网络编程面试题目

1.简述 OSI 七层协议。

为了实现计算机系统的互连,OSI参考模型把整个网络的通信功能划分为7个层次,同时也定义了层次之间的相互关系以及各层所包括的服务及每层的功能。OSI的七层由低到高依次为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,下三层(物理层、数据链路层、网络层)面向数据通信,而上三层(会话层、表示层、应用层)则面向资源子网,而传输层则是七层中最为重要的一层。它位于上层和下层中间,起承上启下的作用。

2.简述 TCP/IP 四层协议。

TCP/IP协议(传输控制协议/互联网协议)不是简单的一个协议,而是一组特别的协议,包括:TCP,IP,UDP,ARP等,这些被称为子协议。在这些协议中,最重要、最著名的就是TCP和IP。因此,大部分网络管理员称整个协议族为“TCP/IP”。

分层:

计算机网络中,实际应用的网络协议是TCP/IP协议族,TCP/IP的应用层大体上对应着OSl/RM模型的应用层、表示层和会话层,TCP/IP的网络接口层对应着OSI/RM的数据链路层和物理层,而传输层和网络层在两个模型中对应得很好。

1、链路层

链路层有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。把链路层地址和网络层地址联系起来的协议有ARP(Address Resolution Protocol,地址解析协议)和RARP(Reverse Address Resolution Protocol,逆地址解析协议)。

2、网络层

网络层处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(Internet Protocol,网际协议)、ICMP协议(Internet Control Message Protocol,网际控制报文协议)和IGMP协议(Internet Group Management Protocol,网际组管理协议)。

3、传输层

传输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。

4、应用层

应用层负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:Telnet远程登录、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)、FTP(File Transfer Protocol,文件传输协议)、HTTP(Hyper Text Transfer Protocol,超文本传输协议)等。

3. TCP 和 UDP 的区别是什么?

 

4. TCP 连接建立的时候 3 次握手的具体过程,以及其中的每一步是为什么?

三次握手 TCP连接是通过三次握手来连接的。 

第一次握手  当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为x,等待服务器确认,这时客户端的状态为SYN_SENT。 

第二次握手  当服务器收到客户端发送的SYN后,服务器要做的是确认客户端发送过来的SYN,在这里服务器发送确认包ACK,这里的ACK为x+1,意思是说“我收到了你发送的SYN了”,同时,服务器也会向客户端发送一个SYN包,这里我们设SYN为y。这时服务器的状态为SYN_RECV。  一句话,服务器端发送SYN和ACK两个包。

  第三次握手  客户端收到服务器发送的SYN和ACK包后,需向服务器发送确认包ACK,“我也收到你发送的SYN了,我这就给你发个确认过去,然后我们即能合体了”,这里的ACK为y+1,发送完毕后,客户端和服务器的状态为ESTABLISH,即TCP连接成功。  在三次握手中,客户端和服务器端都发送两个包SYN和ACK,只不过服务器端的两个包是一次性发过来的,客户端的两个包是分两次发送的。

5. TCP 断开连接的具体过程,其中每一步是为什么那么做?

四次挥手 当A端和B端要断开连接时,需要四次握手,这里称为四次挥手。 

断开连接请求可以由客户端发出,也可以由服务器端发出,在这里我们称A端向B端请求断开连接。 

第一次挥手  A端向B端请求断开连接时会向B端发送一个带有FIN标记的报文段,这里的FIN是Finish的意思。

第二次挥手  B端收到A发送的FIN后,B段现在可能现在还有数据没有传完,所以B端并不会马上向A端发送FIN,而是先发送一个确认序号ACK,意思是说“你发的断开连接请求我收到了,但是我现在还有数据没有发完,请稍等一下呗”。

第三次挥手  当B端的事情忙完了,那么此时B端就可以断开连接了,此时B端向A端发送FIN序号,意思是这次可以断开连接了。 第四次挥手  A端收到B端发送的FIN后,会向B端发送确认ACK,然后经过两个MSL时长后断开连接。   MSL是Maximum Segment Lifetime,最大报文段生存时间,2个MSL是报文段发送和接收的最长时间

6. TCP 的十一种状态?

LISTEN - 侦听来自远方TCP端口的连接请求; 

SYN-SENT -在发送连接请求后等待匹配的连接请求; 

SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认; 

ESTABLISHED- 代表一个打开的连接,数据可以传送给用户; 

FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;

FIN-WAIT-2 - 从远程TCP等待连接中断请求; 

CLOSE-WAIT - 等待从本地用户发来的连接中断请求; 

CLOSING -等待远程TCP对连接中断的确认; 

LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认; 

TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认; 

CLOSED - 没有任何连接状态;

7. 什么是 socket?简述基于 tcp 协议的套接字通信流程。

socket(简称套接字) 是进程间通信的⼀种⽅式, 能实现不同主机间的进程间通信,我们⽹络上各种各样的服务⼤多都是基于 Socket 来完成通信的。

tcp协议套接字通信流程

1.服务器先用 socket 函数来建立一个套接字,用这个套接字完成通信的监听。
2.用 bind 函数来绑定一个端口号和 IP 地址。因为本地计算机可能有多个网址和 IP,每一个 IP 和端口有多个端口。需要指定一个 IP 和端口进行监听。
3.服务器调用 listen 函数,使服务器的这个端口和 IP 处于监听状态,等待客户机的连接。
4.客户机用 socket 函数建立一个套接字,设定远程 IP 和端口。
5.客户机调用 connect 函数连接远程计算机指定的端口。
6.服务器用 accept 函数来接受远程计算机的连接,建立起与客户机之间的通信。
7.建立连接以后,客户机用 write 函数向 socket 中写入数据。也可以用 read 函数读取服务器发送来的数据。
8.服务器用 read 函数读取客户机发送来的数据,也可以用 write 函数来发送数据。
9.完成通信以后,用 close 函数关闭 socket 连接。

8. 简述基于 udp 协议的套接字通信流程。

 9. TCP 为什么不是两次连接?而是三次握手?

第三次握手  客户端收到服务器发送的SYN和ACK包后,需向服务器发送确认包ACK,“我也收到你发送的SYN了,我这就给你发个确认过去,然后我们即能合体了”,这里的ACK为y+1,发送完毕后,客户端和服务器的状态为ESTABLISH,即TCP连接成功。  在三次握手中,客户端和服务器端都发送两个包SYN和ACK,只不过服务器端的两个包是一次性发过来的,客户端的两个包是分两次发送的。

这是第三次握手的内容,如果没有第三次握手,那么服务端将不会收到客户端发送的确认包,那么服务端会认为连接没有建立,

客户端对已建立的连接保存必要的资源,如果大量的这种情况,客户端会崩溃。

10. 为何基于 tcp 协议的通信比基于 udp 协议的通信更可靠?

 tcp协议一定是先建好双向链接,发一个数据包要得到确认才算发送完成,没有收到就一直给你重发;udp协议没有链接存在,udp直接丢数据,不管你有没有收到。

11. 网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?

1,进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。
2,线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP(Symmetric Multi-Processing,对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结 构。)机器上运行,而进程则可以跨机器迁移。

根本区别就一点:用多进程每个进程有自己的地址空间(address space),线程则共享地址空间。所有其它区别都是由此而来的:
1。速度:线程产生的速度快,线程间的通讯快、切换快等,因为他们在同一个地址空间内。
2。资源利用率:线程的资源利用率比较好也是因为他们在同一个地址空间内。
3。同步问题:线程使用公共变量/内存时需要使用同步机制还是因为他们在同一个地址空间内。

12. 大规模连接上来,并发模型怎么设计?

 

二. 常见网络编程笔试题目.

1.以下选项中,是 TCP/IP 体系中运输层最重要的协议之一的是 (A )

A UDP
B FTP
C DNS
D PPP

正确答案选A

2.以下不是DNS服务的作用的是:(D)

A   将主机名翻译到指定的IP地址

B   将IP地址反解成主机名

C 解析特定类型的服务的地址,如MX,NS

D  将IP解析成MAC地址

正确答案选D,

DNS是域名解析协议

IP地址转换成MAC地址是ARP协议的作用

3.在无连接系统中,下列哪项陈述是正确的? (B )

A  发送数据包之前联系目的设备
B  发送数据包之前不联系目的设备
C  目的设备向源设备发送确认,表示已经收到数据包
D  目的设备向源设备发送确认,请求发送下一个数据包

正确答案选B,其余是TCP有线连接的陈述

4. IP 地址是一个32位的二进制数,它通常采用点分(C)

A 二进制数表示
B 八进制数表示
C 十进制数表示
D 十六进制数表示

正确答案选C

5.服务与协议是完全不同的两个概念,下列关于它们的说法错误的是 (D)

A 协议是水平的,即协议是控制对等实体间通信的规则。服务是垂直的,即服务是下层向上层通过层间接口提供的。
B 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务
C 协议的实现保证了能够向上一层提供服务。
D OSI将层与层之间交换的数据单位称为协议数据单元PDU

正确答案为D,应该是SDU不是PDU

6.关于TCP协议的描述,以下错误的是:(B)

A 面向连接

B 可提供多播服务

C 可靠交付

D 报文头部长,传输开销大

B是UDP协议

7.为了保证连接的可靠性,TCP通常采用(A)

A 3次握手

B 滑动窗口机制

C 自动重传机制

D 端口机制

TCP通常采用三次握手,四次分手

8.计算机是怎么确定哪个应用程序使用该协议(C)

A ip地址

B mac机制

C 端口号

D 协议名

9.当建立连接时,哪一个数据包发送顺序是正确的TCP握手协议过程?

 

正确答案为D 以上都不是

10.请说明“会话层”是OSI七层协议中的哪一层?

 

A 3

B 4

C 5

D 6

正确答案为C

11.

 正确答案为C,看TCP协议三次握手的具体步骤

12.

正确答案为D 255.255.255.0

13.将物理地址转为IP地址的协议为:(D)

A  IP

B ICMP

C  ARP

D  RARP

正确答案为D

RARP 协议:可将物理地址转换为 IP 地址
ARP 协议:可将 IP 地址转换为物理地址

14.可以用哪个命令来查看TCP和UDP连接状态?(B)

A  ping

B  netstat

C  ipconfig

D  nslookup

正确的答案为B

Netstat: 显示有哪些网络连接正在运作。默认显示 TCP 连接的信息。
ping:检查网络是否连通,可以很好地帮助我们分析和判定网络故障
Ipconfig: 显示 IP 地址、子网掩码和缺省网关值。
Nslookup: 查询 DNS 的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。

15. 网络协议的主要要素为(C)

A  数据格式、编码、信号电平

B  数据格式、控制信息、速度匹配

C  语法、语义、定时

D  编码、控制信息、同步

正确答案为:C

主要要素通俗理解: 如何讲,讲什么,什么时候对话

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值