ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

计算机网络 & 网络编程 期末总结与测评题

2020-01-10 22:00:57  阅读:609  来源: 互联网

标签:子网 测评 编程 局域网 计算机网络 地址 服务器 接字 连接


  

第一部分:网络编程部分的相关知识

 

Socket套接字定义:

 

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。

 

    • Socket的英文原义是“孔”或“插座”。在网络编程中,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。

    • Socket套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。
      它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

    • Socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。 

 

Socket 调用流程:

 

 

 

socket():创建套接字。

bind():指定本地地址。一个套接字用socket()创建后,它其实还没有与任何特定的本地或目的地址相关联。在很多情况下,应用程序并不关心它们使用的本地地址,这时就可以不用调用bind指定本地的地址,而由协议软件为它们选择一个。但是,在某个知名端口(Well-known Port)上操作的服务器进程必须要对系统指定本地端口。所以一旦创建了一个套接字,服务器就必须使用bind()系统调用为套接字建立一个本地地址。

connect():将套接字连接到目的地址。初始创建的套接字并未与任何外地目的地址关联。客户机可以调用connect()为套接字绑定一个永久的目的地址,将它置于已连接状态。对数据流方式的套接字,必须在传输数据前,调用connect()构造一个与目的地的TCP连接,并在不能构造连接时返回一个差错代码。如果是数据报方式,则不是必须在传输数据前调用connect。如果调用了connect(),也并不像数据流方式那样发送请求建连的报文,而是只在本地存储目的地址,以后该socket上发送的所有数据都送往这个地址,程序员就可以免去为每一次发送数据都指定目的地址的麻烦。

listen():设置等待连接状态。对于一个服务器的程序,当申请到套接字,并调用bind()与本地地址绑定后,就应该等待某个客户机的程序来要求连接。listen()就是把一个套接字设置为这种状态的函数。

accept():接受连接请求。服务器进程使用系统调用socket,bind和listen创建一个套接字,将它绑定到知名的端口,并指定连接请求的队列长度。然后,服务器调用accept进入等待状态,直到到达一个连接请求。

send()/recv()和sendto()/recvfrom():发送和接收数据 。在数据流方式中,一个连接建立以后,或者在数据报方式下,调用了connect()进行了套接字与目的地址的绑定后,就可以调用send()和reev()函数进行数据传输。

closesocket():关闭套接字。

 

 

 TCP 三次握手四次断开的工作原理图:

 

 

    • 第一次握手:A客户进程向B发出连接请求报文段,(首部的同步位SYN=1,初始序号seq=x),(SYN=1的报文段不能携带数据)但要消耗掉一个序号,此时TCP客户进程进入SYN-SENT(同步已发送)状态。
    • 第二次握手:B收到连接请求报文段后,如同意建立连接,则向A发送确认,在确认报文段中(SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y),TCP服务器进程进入SYN-RCVD(同步收到)状态;
    • 第三次握手:TCP客户进程收到B的确认后,要向B给出确认报文段(ACK=1,确认号ack=y+1,序号seq=x+1)(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。TCP连接已经建立,A进入ESTABLISHED(已建立连接)。
      当B收到A的确认后,也进入ESTABLISHED状态。

 

套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 

服务器监听:建立服务器端套接字,并处于等待连接的状态,不定位具体的客户端套接字,而是实时监控网络状态。 

客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。 为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 

连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端, 一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。  上图为基于TCP协议Socket的通信模型。

 

TCP数据包格式:

 

 

 

内核中断简介

 

  

 

gdb常用指令:

break——设置断点,缩写为b;

delete——删除断点,缩写c;

step——单步跟踪,进入调用函数,s;

next——单步跟踪,不进入调用函数,n;

continue——恢复执行,c;

run——启动调试,r;

 

 

 

第二部分:《计算机网络》相关基础知识回顾

 

我去复习408《计算机网络》 做了一些笔记:

 

 

 

 

 

 

 

 

 

第三部分:测评试题【包括:计算机网络+网络编程】

 

1.选择题

  1. 【408】OSI参考模型的第5层(自下而上)完成的主要功能是(C)

    A.差错控制

    B.路由选择

    C.会话管理

    D.数据表示转换

  2. 【原创】在Socket API中,以下哪个函数是用于设置等待连接状态的?(C)

    A.socket

    B.send

    C.listen

    D.accept

  3. 【408】若将网络21.3.0.0/16划分为128个规模相同的子网,则每个子网可分配的最大IP地址个数为(C)

    A.254

    B.256

    C.510

    D.512

  4.  

  5. 【408】下列关于CSMA/CD协议的叙述中,错误的是(B)

    A.边发送数据,边检测是否发生冲突

    B.适用于无线网络,以实现无线链路共享

    C.需要根据网络跨距和数据传输速率限定最小帧长

    D.当信号传播延迟趋近0时,信道利用率趋近100%

  6. 【408】假设所有域名服务器均采用迭代查询方式进行域名解析。当H4访问规范域名为www.abc.xyz.com的网站时,域名服务器201.1.1.1在完成该域名解析过程中,可能发出DNS查询最少和最多次数分别是(C)

    A.0,3

    B.1,3

    C.0,4

    D.1,4

 

2.简答题

1.【百度文库】简述TCP/IP协议中三次握手的过程及涵义,并画出示意图:

 

答:第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 

       二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 
       三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

 

  

 

2.

3.

 

 

3.综合分析题

 

1.【408】某网络拓扑如下图所示,路由器 R1 通过接口 E1、E2分别连接局域网 1、局域网 2,通过接口 L0连接路由器 R2,并通过路由器 R2 连接域名服务器与互联网。R1 的 L0 接口的 IP 地址是 202.118.2.1;R2的 L0接口的 IP 地址是 202.118.2.2,L1 接口的 IP 地址是 130.11.120.1,E0接口的 IP 地址是 202.118.3.1;域名服务器的 IP 地址是 202.118.3.2。

 

 ⑴ 将 IP 地址空间 202.118.1.0/24 划分为 2 个子网,分别分配给局域网 1、局域网 2,每个局域网需分配的IP 地址数不少于 120个。请给出子网划分结果,说明理由或给出必要的计算过程。

⑵ 请给出 R1 的路由表,使其明确包括到局域网 1 的路由、局域网 2的路由、域名服务器的主机路由和互联网的路由。
⑶ 请采用路由聚合技术,给出 R2 到局域网 1和局域网 2的路由。

 解析:

⑴ CIDR 中的子网号可以全 0 或全 1,但主机号不能全 0 或全 1。因此若将 IP 地址空间 202.118.1.0/24 划分为 2 个子网,且每个局域网需分配的 IP 地址个数不少于 120 个,子网号至少要占用一位。由 2 6 -2<120<2 7 -2 可知,主机号至少要占用 7 位。由于源 IP 地址空间的网络前缀为 24 位,因此 主机号位数+子网号位数=8 。
综上可得主机号位数为 7,子网号位数为 1。
因此子网的划分结果为:子网 1:202.118.1.0/25,子网 2:202.118.1.128/25。
地址分配方案:子网 1 分配给局域网 1,子网 2 分配给局域网 2,或子网 1 分配给局域网 2,子网 2 分配给局域网 1。
⑵ 由于局域网 1 和局域网 2 分别与路由器 R1 的 E1、E2 接口直接相连,因此在 R1 的路由表中,目的网络为局域网 1 的转发路径是直接通过接口 E1 转发,目的网络为局域网 2 的转发路径是直接通过接口 E1 转发。由于局域网 1、2 的网络前缀均为 25 位,因此它们的子网掩码均为 255.255.255.128。根据题意,R1 专门为域名服务器设定了一个特定的路由表项,因此该路由表项中的子网掩码应为255.255.255.255。对应的下一跳转发地址是 202.118.2.2,转发接口是 L0。根据题意,到互联网的路由实质上相当于一个默认路由,默认路由一般写作 0/0,即目的地址为 0.0.0.0,子网掩码为 0.0.0.0。对应的下一跳转发地址是 202.118.2.2,转发接口是 L0。
综上可得到路由器 R1 的路由表为:

  ⑶ 局域网 1 和局域网 2 的地址可以聚合为 202.118.1.0/24,而对于路由器 R2 来说,通往局域网 1 和 2 的转发路径都是从 L0 接口转发,因此采用路由聚合技术后,路由器 R2 到局域网 1 和局域网 2 的路由为:

标签:子网,测评,编程,局域网,计算机网络,地址,服务器,接字,连接
来源: https://www.cnblogs.com/qyf2199/p/12172497.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有