如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?

1.网络程序设计课程总结

网络程序课程内容主要包括,Linux网络命令的用法,socket编程及相关的系统调用过程,TCP协议原理和内核中tcp协议栈源码,IP协议、ARP协议、DNS协议的原理。

TCP/IP协议族中各协议以及所在的网络层次。这些协议和网络层工作的流程大致为:应用层将各个应用产生的数据进行某些处理后(如加密);发送给传输层,如果数据较大,传输层将网络层发来的数据进行分段,每个数据段加上UDP或TCP的报文首部形成数据段(期间还涉及传输层的流量控制和差错控制);发送给网络层,网络层给收到的数据段加上IP首部,查询路由表确定下一跳IP地址,查询ARP缓冲表,确定下一跳物理地址(期间会涉及拥塞控制,差错控制)发送给数据链路层;数据链路层给报文加上帧头和帧尾,发送给物理层。物理层就是物理设备,如网线,交换机,这些物理设备负责数据的具体的转发交付。

 

1.1 Linux网络命令,常见的如下:

ifconfig:查询、设置网卡与IP网络等相关参数

route:查看、配置路由表

ping:测试网络连接

traceroute:追踪数据包在网络上传输时的全部路径

netstat:用来打印Linux中网络系统的状态信息

arp:显示arp缓冲区的所有条目、删除指定条目或增加静态IP地址与MAC地址的对应关系

host:常用的分析域名查询工具,可以检测域名系统工作是否正常

 

1.2 socket

编程的流程为:

 

调用到的函数接口有:

 创建套接字:socket(PF_INET,SOCK_STREAM,0)

监听请求:listen(server_sockfd,5)

请求建立连接:connect(client_sockfd,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr)

接受连接请求:accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size)

发送数据:len=send(client_sockfd,buf,strlen(buf),0)

接收数据:len=recv(client_sockfd,buf,BUFSIZ,0)

关闭连接:close(client_sockfd), close(server_sockfd)

 

1.3 系统调用

系统调用过程:

用户进程使用socket API 的时候,会产生向量为0x80的编程异常,系统执行系统调用。

进程传递系统调用号到寄存器eax,指明需要哪个系统调用,同时会将系统调用需要的参数存入相关寄存器。

系统调用处理函数system_call是Linux中所有系统调用的入口点,通过进程存在eax寄存器中的系统调用号决定调用哪个系统调用。

其中,socket api有两种系统调用方式:(1)所有的socket系统调用的总入口是sys_socketcall(系统调用号102)  (2)每一个独立的socket api都对应一个单独的系统调用。

 

1.4 Tcp协议

TCP是面向连接的协议。面向连接的运输层协议在源点和终点之间建立了一条虛路径。同属于一个报文的所有报文段都沿着这条虛路径发送。为整个报文使用一条虚路径能够更容易地实施确认过程以及对损伤或丢失报文的重传。TCP的连接是虚拟的,而不是物理的。TCP工作在更高的层次上,TCP使用IP的服务把一个个报文段交付给接收方,但是连接本身是由TCP控制的。如果一个报文段丢失或受到损伤,那么这个报文段就被重传。与TCP不同,IP 并不知道TCP的重传行为。如果一个报文段没有按序到达,那么TCP会保留它,直至丢失的报文段到达为止,但IP并不知道这个重新排序的过程。

在TCP中,面向连接的传输需要经过三个阶段:连接建立、数据传输和连接终止。

 

1.5 IP协议

IP分组的交付转发过程,通过查询路由表选择下一跳地址,直接交给目的主机,或者交给下一跳路由。IP数据报的格式。

IP层用于差错控制的ICMP协议,ICMP报文的首部。

IP地址,无分类编址CIDR。

 

1.6 ARP协议

在任何时候,只要一台主机或路由器有IP数据报要发送给另一台 主机或路由器,它就要知道接收方的逻辑(IP) 地址。但是IP数据报必须封装成帧才能通过物理网络。这就意味着发送方还需要有接收方的物理地址,因而需要从逻辑地址到物理地址的映射。ARP 接受来自IP协议的逻辑地址,将其映射为相应的物理地址,然后再把这个物理地址递交给数据链路层。


1.7 DNS协议
域名解析协议,用于将IP地址与域名进行映射,用户上网时输入域名便可以将域名转换成相应的IP地址,访问网站。
 
2.测试试题
选择题
1.内核初始化过程中,将中断异常向量表进行重定位的函数()(原创)
A. trap_init()
B. vfs_cache_init()
C. rest_init()
D. tick_init()
解答:A
 
2.下面选项中正确的是()  (原创)
A. TCP提供面向连接的可靠的服务
B. UDP提供面向连接的不可靠的服务
C. TCP提供无连接不可靠的服务
D. UDP提供无连接可靠的服务
解答:A
 
3.ARP协议处于哪一层()(原创)
A.应用层
B.传输层
C.网络层
D.物理层
解答:C
 
4.使用ping 192.168.151.132网络命令的时候,发送的报文是()(原创)
A.UDP报文
B.TCP报文
C.ICMP报文
D.HTTP报文
解答:C
 
5.一个数据报在到达时其首部有如下的信息(十六进制表示):45 00 00 55 00 03 00 00 20 06 00 00 7C 4B 03 02 B4 0E 0F 02
请问其最多还可以经过多少个路由器()(原创)
A.3
B.0
C.32
D.6
 解答:C  IP首部中第9个字节代表了生存时间,为20,转化为十进制就是32,每经过一个路由,生存时间减一。
 
解答题:

1.在一个地址块中,我们知道有一个主机的IP地址是182.44.82.16/26.试问这个地址块的首地址(网络地址)和末地址(受限的广播地址)各是什么?(《TCP/IP协议族》第4版,P132第22题)

解答:网络地址:182.44.82.0    末地址:182.44.82.63   网络号为前26位,主机号为后6位,网络地址为主机号全零的情况,末地址位主机号全1的情况。

 

2.若IP报文总长度为1100字节而其中的1076字节是来自高层的数据,试计算首部中HLEN字段的值。(自己改编)

解答:首部长度=1100-1076=24字节,HLEN的值=24/4=6

 

3.写出图中路由器R2的路由表,按掩码长度由大到小的顺序。写出路由器R3的路由表(按直接交付优先,间接交付次优的顺序)( TCP/IP协议族》第4版,P154第3题,第4题)

 

 解答:

R2路由表:

网络地址

下一跳地址

接口

192.16.7.0/24

111.15.17.32

M1

170.14.0.0/16

111.25.19.20

M1

145.80.0.0/16

111.25.19.20

M1

111.0.0.0/8

……………………

M1

默认路由

……………………

M0

 

R3路由表:

网络地址

下一跳地址

接口

192.16.7.0/24

……………………

M0

111.0.0.0/8

……………………

M1

170.14.0.0/16

111.25.19.20

M1

145.80.0.0/16

111.25.10.20

M1

默认路由

111.30.31.18

M1

posted @ 2020-01-10 20:06  zhouxinghui  阅读(209)  评论(0编辑  收藏  举报