《网络协议分析及编程》 复习搜整

摘要:
XTU“网络协议分析与编程”复习、搜索并填空/在前面写一个简短的答案:2015年通过测试的˂TCP/IP标记***的含义是什么,英文全称是什么?)在协议系统中,进程之间的交互采用客户机/服务器模型。设置传输层的主要目的是实现网络环境中分布式进程之间的通信功能。显然,一个完整的TCP/IP网络通信连接可以通过由双方对应的套接字组成的套接字对来唯一标识。

XTU《网络协议分析及编程》复习搜整

填空(20*2’)/简答题(4*10’)
写在前面:命中2015级这次考试的已用***标出

<TCP/IP是什么意思,其中英文全称是什么?>

在TCP/IP(英文全称:Transmission Control Protocol/Internet Protocol即传输控制协议/因特网协议,是一个由多种协议组成的协议族,定义了计算机通过网络互相通信及协议族各层次之间通信的规范。)协议体系中,进程之间的相互作用采用客户/服务器模型。


<C/S模型中,客户与服务器分别表示的是什么?>

客户与服务器分别表示相互通信的两个应用程序进程。在C/S模型中,是根据通信发起的方向来区别一个应用程序进程是客户的还是服务端的。一般将发起通信的应用程序进程称为客户,而将负责等待接受客户通信请求并为客户端提供服务的应用程序进程称为服务器

 

设置传输层的主要目的就是要实现网络环境下分布式进程之间的通信功能

传输层需要解决在网络环境下分布式进程间通信所面临的以下两个方面的问题:

a.进程的命名与寻址。

<在网络环境下,你觉得应该怎样才能标识一个进程?>

TCP/IP参考模型提出了协议端口(Protocol Port,简称端口)的概念,用于标识通信的进程。其中,端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。端口操作类似于一般的文件I/O操作。与文件描述符类似,每个端口均拥有一个唯一的被称为端口号(Port Number)的16位无符号整数型标识符,范围是0~65535,用于区别不同的端口。

b.多重协议的识别。

在TCP/IP网络环境下,一个完整的网间通信需要由两个进程完成,并且这两个进程之间只能使用相同的传输层协议才能进行通信,也就是说,不可能通信的一端使用TCP协议,而另一端使用UDP协议。因此,一个完整的网间通信需要使用一个五元组<协议,本地地址,本地端口号,远程地址,远程端口号>才能唯一标识。其中,二元组<本地地址,本地端口号>称为网间进程通信中的本地端点地址(Endpoint Address),二元组<远程地址,远程端口号>称为网间进程通信中的远程端点地址,而三元组<协议,本地地址,本地端口号>称为一个半相关五元组<协议,本地地址,本地端口号,远程地址,远程端口号>称为一个相关

 

<你觉得怎样才能标识一个套接字?>

一个套接字可以看成是应用程序进程进行网间通讯的端点。而在网络环境下,一个应用程序进程又通常可用一个半相关<协议,本地地址,本地端口号>来进行唯一标识,因此,一个套接字显然也可以用上述半相关<协议,本地地址,本地端口号>来进行唯一标识,其中,二元组<本地地址,本地端口号>通常也称为套接字的端点地址

显然,一个完整的TCP/IP网络通信连接可用通信双方所对应的套接字组成的套接字对来唯一标识。其中,通常将运行于客户端的套接字称为客户端套接字(Client Socket),而将运行于服务器端的套接字称为服务器端套接字(Server Socket)。

 

<你觉得客户端怎样才能知道服务器端套接字的端点地址?>

为了让服务器套接字的端点地址预先被客户端知道,服务器端套接字必须使用熟知(Well-Known)端口号。

 

 <你觉得客户软件可以有哪些方法来找到服务器端套接字的端点地址?>

客户软件可用以下多种方法找到某个服务器套接字的端点地址:

a在编译程序时,将服务器套接字的端点地址说明为常量;

b要求用户在启动程序时输入服务器套接字的端点地址;

c从本地文件中获取服务器套接字端点地址的有关信息;

d通过某个组播或广播协议来查找服务器套接字的端点地址。

  

sockaddr结构虽然可适用于TCP/IP协议族中的端点地址,但由于使用套接字的每个协议族都精确地定义了它的端点地址,例如:每个TCP/IP端点地址是由以下字段构成:一个用来标识地址类型的2字节字段、一个2字节的端口号字段、一个4字节的IP地址字段(IPv4),以及一个未使用的8字节字段

因此,套接字软件在头文件<netinet/in.h>中还为TCP/IP协议族提供了以下预定义结构sockaddr_in来指明这种格式:

显然,只使用TCP/IP协议的应用程序可以只使用上述sockaddr_in结构,而无需使用sockaddr结构。另外,由于TCP/IP协议族(表示为PF_INET)中各协议均使用一种单一的地址表示方式,其地址族用符号AF_INET表示,因此,在上述sockaddr_in结构中,地址类型字段sin_family应赋值为AF_INET

  

网络字节顺序与主机字节顺序问题

<请问,在网络通信中,如何才能解决通信双方可能存在的采用了不同的主机字节顺序的问题?>

为了进行主机字节顺序与网络字节顺序之间的转换,套接字软件提供了以下四个转换函数:

htons函数:htons就是host-to-network-fortype 'short'的意思,功能是把unsigned short类型的数据从主机字节顺序转换到网络字节顺序,调用成功时,将返回一个网络字节顺序的16位无符号短整型(unsigned short)值;若调用出错则返回-1。其函数原型如下:

#include< netinet/in.h>//含有sockaddr_in结构与字节顺序转换函数的定义

uint16_thtons(uint16_t hostshort);

在上述htons()函数的原型中,各参数的含义如下:

※ hostshort:一个16位无符号短整型值。

htonl函数:htonl就是host-to-network-fortype 'long'的意思,该函数的功能是把unsigned long类型的数据从主机字节顺序转换到网络字节顺序,调用成功时返回一个网络字节顺序的32位无符号长整型(unsigned short)值;若调用出错则返回-1。其函数原型如下:

#include<netinet/in.h>

uint32_thtonl(uint32_t hostlong);

在上述htonl()函数的原型中,各参数的含义如下:

hostlong:一个32位无符号长整型值。


....................................................

.............查看更多,自行下载...........

....................................................




【附:一文一图】

《网络协议分析及编程》 复习搜整第1张

免责声明:文章转载自《《网络协议分析及编程》 复习搜整》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux-网络管理-6多线程调用有参数的方法---c# Thread 与 Task下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

浅析AnyCast网络技术

什么是BGP AnyCast? BGP anycast就是利用一个(多个) as号码在不同的地区广播相同的一个ip段。利用bgp的寻路原则,短的as path 会选成最优路径(bgp寻路原则之n),从而优化了访问速度。 其实bgp anycast是不同服务器用了相同的ip地址。 阿里的DNS 就是使用了BGP AnyCast “其实bgp anycast是...

Mysql 修改默认端口

Mysql修改默认端口         0~1023端口为计算机公认端口(Well Known Ports),它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。         其他端口可用于自定义端口,但事先需要明确该端口是否被占用。         mysql默认端口为3306,有时候我们需要修改端口,这个时候可以在...

day028两种粘包现象,两种解决粘包的方法,subprocess, struck模块

本节内容: 1.两种粘包现象 2.struck模块的使用 3.两种解决粘包的解决方案 4.验证客户端的链接合法性 参考文章:https://www.cnblogs.com/clschao/articles/9593164.html?tdsourcetag=s_pctim_aiomsg#part_9 一、两种粘包现象 粘包1:连续的小包,会被优化机制给合并...

JSP(二)

JSP九个内置对象(四大作用域对象): 1.内置对象称为隐式对象由tomcat容器创建 : appliction:全局上下文对象 session:会话对象 request:请求对象 pageContext:当前页面对象 response:响应对象 config:配置文件对象 out:输出对象 execption:异常对象 pageContext.getEx...

Nodejs之路(一)—— Nodejs入门

不知不觉,现在已经习惯学一点东西,就写博客记录一下。这次学习Nodejs主要是在B站上看的视频教程,感觉讲的很是不错,所以我想把在看视频学习过程中的一些重要知识点记录下来方便以后自己快速查阅。 -----注:这系列博客记录的知识点主要来源于黑马程序员的Nodejs视频教程,博主只是简单手动进行了代码复现和知识点记录,侵删 一.Node是什么? 1.Node...

安装Oracle时选择桌面类和服务器类的区别

桌面类――这种安装方式一般适用于台式机和笔记本。它包含一个最小数据库和最低的配置需求。服务器类――这种安装方式适用于服务器,例如,它会向您提供数据中心和用于支持企业级的应用程序。如果您需要使用高级配置选项,请选择此安装类型。在桌面类中,只有基本选择项。在服务器类,您可以选择标准安装(仅让您作有基本选择)或高级安装。在桌面类或典型安装中,Oracle数据库将...