TCP\/IP网络编程项目式教程答案的简单介绍

http://www.itjxue.com  2023-02-21 08:03  来源:未知  点击次数: 

TCP/IP详解卷一 ——tcp

即使端口处于2MSL状态,使用该选项,仍然能够在该端口建立连接。

服务器常会设置该选项,以防服务器重启。

如果在TIME_WAIT时间内,收到了对端发送来的数据报(不是重置报文段都行),那么该状态将被破坏,称为 时间等待错误 。原因是,当收到报文段以后,通常Seq是旧的,所以本端就会发送ACK,对端已经关闭或者是别的连接,就会发送RST,导致TIME_WAIT状态被破坏。

但是许多系统规定,TIME_WAIT状态是不对重置报文段做出反应。

两端同时发送FIN,两端又同时ACK。又同时进入TIME_WAIT

当处于TIME_WAIT的主机崩溃以后,重启,然后需要等待相当与一个MSL的时间才能建立新的连接。

这段时间成为静默时间。

当一段发现到达的报文段对相关连接(也就是进程,套接字对)而言不正确的时候,TCP就会发送一个重置报文段,从而导致对端的连接快速拆卸(也就是结束吧!)。

重置报文段的ACK位必须有,而且ACK的值必须在正确的窗口范围内,这样可以防止被攻击。

FIN正常关闭一条连接成为 有序释放 ,通常不会出现丢失数据的情况。

重置报文段终止一条连接成为 终止释放 。重置报文段在任何时候都可以发送,代替FIN来终止连接,且不学校对端ACK

终止报文段特性:

当该数值设置为0,那么也意味着,不会再连接终止之前为了确保本端缓存中的数据都发送出去而等待。

TCP在发送数据时会设置计时器,如果计时器超时认为受到数据确认信息,就会引发相应的超时,或给予计时器的重传操作,计时器超时时成为重传超时( RTO )。

TCP累计确认无法返回新的ACK,或者当ACK包含选择确认信息(SACK)时,表明出现书序数据报,空洞。就会引起 快速重传 。

若RTO短与RTT,那么没分都会重传,反之,整个网络利用率就会随之下降。

RTT样本 :TCP在收到数据后会返回确认信息ACK,该信息中携带一个字节的数据,测量传输该确认需要的时间,该测量结果成为RTT样本。

每个连接的RTT军独立计算。

如何根据RTT来设置RTO,有如下的方法

公式: SRTT=a*SRTT+(1-a)RTT ,a取 0.8-0.9 。

当TCP运行在RTT变化较大的网络中,无法取得期望的结果。

以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补

因为丢失ACK,或者实际RTT显著增长,可能出现伪超时的现象。

以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补

每个包可以选择各自的传送路径。某些高级路由器的采用多个并行数据链路,不同的处理演示也会导致包的离开顺序和到达顺序不匹配

包的失序会造成重传,很近单嘛,前面一个小号的Seq没到达,后面的先到达,那么ACK就会 重复

当TCP超时重发是,循序执行重新租宝,发送送一个更大的报文段提高性能,不超过MSS和MTU。

出现在每次传送的包较小,又丢包的情况

每个交互键通常会生成一个单独的数据报,也就是每个按键是独立传输的。

ssh调用一个shell,对客户端输入的字符做出辉县,因此,每个字符生成4个tcp数据段,客户端的交互按键输入,服务器对按键的ACK,服务器生成的辉县,客户端对回显的ACK。通常第二段和第三段合并,成为 捎带延时确认 。

PSH位设置,意味着发送端的缓存为空,也就是没什么可以发送了。

许多情况下,TCP并不是对每个到来的包都单独的ACK,利用累计ACK可以确认之前的ACK。累计确认可以允许TCP延时一段时间发送ACK,以便将ACK和相同方向上需要传输的数据结合发。这种捎带传输的方法常用于批量数据传输。

不能任意的延迟ACK,会造成重传。同时当失序发生时,必须立刻传送ACK。

系统可以设置,一般延时为200-600毫秒。

该算法要求,当TCP连接中有在传数据(那些已发送,但是未确认的数据)时,小的报文段就不能被发送,知道所有的数据都受到ACK。并且受到ACK后,TCP收集这些小的数据,整合到一个报文段中发送。

这种方法破事TCP遵循等停规程,只有收到所有传送数据的ACK后才能继续发送新数据。

该算法的不同之处在于他实现了自时钟控制,ACK返回越快,传输也越快。在相对高延迟的广域网中,更需要减小小报文的数目,该算法使得单位时间内发送的报文数目更少,RTT控制发包速率。

该算法减少小包数目的同时,也增大了传输时延,也就是总的发送时间。

窗口大小表明本端可用缓存大小,对端传送的数据不应该超过改大小。

也表明对端发送的数据的最大大小为TCP头部ACK号和窗口大小字段之和。

也就是Seq = ACK+MSS

TCP活动的两端都维护一个发送窗口结构和接受窗口结构。

TCP以 字节 为单位维护窗口结构。

每个TCP报文段都包含ACK号和窗口通告信息,TCP发送端可以据此调节窗口结构。

窗口左边界不能左移。

窗口的动作分为,关闭(收到ACK,左边右移),打开(MSS扩大,右边右移),收缩(MSS减小,右边左移)

当收到ACK号增大,而MSS不变时窗口向前 滑动

当当左边界与右边界相等时,成为 零窗口 ,此时发送端不能在发送新的数据,这种情况下,TCP开始探测对端窗口,伺机增大窗口。

当接受窗口值变为0是,可以邮箱的组织发送端继续发送,知道窗口大小回复为非0值。当接收端窗口得到可用空间是,就会给发送端传输一个窗口更新,告知器可以继续发送数据,这样的这样的窗口更新通常不包含数据,成为纯ACK,因此不能保证传输的可靠性。

如果一端的窗口更新ACK丢失,通信双方就会处于等待状态。为避免这种情况发生。发送端会采用一个持续计时器间歇性的查询接收端,看其窗口是否已经增长。

持续计时器会触发窗口探测的传输,强制要求对端返回ACK。 窗口探测包 包含一个字节数据,采用TCP传输,因此可以避免窗口更新丢失导致的死锁。因为包含一个字节数据Seq改变,接受端必须处理,如果接受就会ACK。窗口大小还是0,那么就会丢弃该报,没有响应。这时候发送端会持续的发送窗口探测包。

当接收端通告窗口较小,或者发送端发送的数据较小。这样数据报的有效携带率小,耗费网络资源多。

避免方法

以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补以后再补

Python网络编程 -- TCP/IP

首先放出一个 TCP/IP 的程序,这里是单线程服务器与客户端,在多线程一节会放上多线程的TCP/IP服务程序。

这里将服务端和客户端放到同一个程序当中,方便对比服务端与客户端的不同。

TCP/IP是因特网的通信协议,其参考OSI模型,也采用了分层的方式,对每一层制定了相应的标准。

网际协议(IP)是为全世界通过互联网连接的计算机赋予统一地址系统的机制,它使得数据包能够从互联网的一端发送至另一端,如 130.207.244.244,为了便于记忆,常用主机名代替IP地址,例如 baidu.com。

UDP (User Datagram Protocol,用户数据报协议) 解决了上述第一个问题,通过端口号来实现了多路复用(用不同的端口区分不同的应用程序)但是使用UDP协议的网络程序需要自己处理丢包、重包和包的乱序问题。

TCP (Transmission Control Protocol,传输控制协议) 解决了上述两个问题,同样使用端口号实现了复用。

TCP 实现可靠连接的方法:

socket通信模型及 TCP 通信过程如下两张图。

[图片上传失败...(image-6d947d-1610703914730)]

[图片上传失败...(image-30b472-1610703914730)]

socket.getaddrinfo(host, port, family, socktype, proto, flags)

返回: [(family, socktype, proto, cannonname, sockaddr), ] 由元组组成的列表。

family:表示socket使用的协议簇, AF_UNIX : 1, AF_INET: 2, AF_INET6 : 10。 0 表示不指定。

socktype: socket 的类型, SOCK_STREAM : 1, SOCK_DGRAM : 2, SOCK_RAW : 3

proto: 协议, 套接字所用的协议,如果不指定, 则为 0。 IPPROTO_TCP : 6, IPPRTOTO_UDP : 17

flags:标记,限制返回内容。 AI_ADDRCONFIG 把计算机无法连接的所有地址都过滤掉(如果一个机构既有IPv4,又有IPv6,而主机只有IPv4,则会把 IPv6过滤掉)

AI _V4MAPPED, 如果本机只有IPv6,服务却只有IPv4,这个标记会将 IPv4地址重新编码为可实际使用的IPv6地址。

AI_CANONNAME,返回规范主机名:cannonname。

getaddrinfo(None, 'smtp', 0, socket.SOCK_STREAM, 0, socket.AP_PASSIVE)

getaddrinfo('', 'ftp', 0, 'socket.SOCK_STREAM, 0, socket.AI_ADDRCONFIG | socket.AI_V4MAPPED)

利用已经通信的套接字名提供给getaddrinfo

mysock = server_sock.accept()

addr, port = mysock.getpeername()

getaddrinfo(addr, port, mysock.family, mysock.type, mysock.proto, socket.AI_CANONNAME)

TCP 数据发送模式:

由于 TCP 是发送流式数据,并且会自动分割发送的数据包,而且在 recv 的时候会阻塞进程,直到接收到数据为止,因此会出现死锁现象,及通信双方都在等待接收数据导致无法响应,或者都在发送数据导致缓存区溢出。所以就有了封帧(framing)的问题,即如何分割消息,使得接收方能够识别消息的开始与结束。

关于封帧,需要考虑的问题是, 接收方何时最终停止调用recv才是安全的?整个消息或数据何时才能完整无缺的传达?何时才能将接收到的消息作为一个整体来解析或处理。

适用UDP的场景:

由于TCP每次连接与断开都需要有三次握手,若有大量连接,则会产生大量的开销,在客户端与服务器之间不存在长时间连接的情况下,适用UDP更为合适,尤其是客户端太多的时候。

第二种情况: 当丢包现象发生时,如果应用程序有比简单地重传数据聪明得多的方法的话,那么就不适用TCP了。例如,如果正在进行音频通话,如果有1s的数据由于丢包而丢失了,那么只是简单地不断重新发送这1s的数据直至其成功传达是无济于事的。反之,客户端应该从传达的数据包中任意选择一些组合成一段音频(为了解决这一问题,一个智能的音频协议会用前一段音频的高度压缩版本作为数据包的开始部分,同样将其后继音频压缩,作为数据包的结束部分),然后继续进行后续操作,就好像没有发生丢包一样。如果使用TCP,那么这是不可能的,因为TCP会固执地重传丢失的信息,即使这些信息早已过时无用也不例外。UDP数据报通常是互联网实时多媒体流的基础。

参考资料:

TCP/IP习题求答案!!!!!!!!

1,1200-1176=24 ,20字节是IP头,4个字节为UDP头,可以判断这是一个UDP的报文。

2,头部当然不能小于5了,5表示5个32bit长,那就是20个字节,刚好是IP头部的最小长度。小于5长度的IP头部都是坏的。

3,原头是5的长,现在是7,7-5=2,2*32bit=64bit 64bit/8=8个字节,选项大小个8个字节。

4,36-5=31 ,31*32bit=992bit 992bit/8=124个字节。

5,没有选项,那就是20个字节的头,头长度字段等于5,1024应该是指传输层大小(如果包含IP头,1024-20=1004,1004除以32除不尽),1024字节除以32,刚好是32,所以总长度字段等于32+5=37

2016 福师《TCP/IP协议原理与编程》在线作业一、二 以及离线作业 全部答案???

福师《TCP/IP协议原理与编程》在线作业一的参考答案:

一、单选题

1、D 2、C 3、C 4、B 5、D 

1. 关于UDP的说法不正确的是()。

A. UDP提供不可靠的服务

B. UDP源端口是可选的

C. UDP是无连接的

D. UDP目的端口是可选的

2. 按照OSI参考模型分层,其第2层,第4层分别为( )

A. 数据链路层,会话层

B. 数据链路层,网络层

C. 数据链路层,传输层

D. 网络层,会话层

3. IP地址202.100.80.110是()地址。

A. A类

B. B类

C. C类

D. D类

4. 下面协议是动态路由协议的是()。

A. UDP

B. RIP

C. ARP

D. TCP

5. RIP协议是使用()进行传输的。

A. TCP

B. HTTP

C. ICMP

D. UDP

6. UDP校验和的计算方法是将数据分为16位长的段,然后对它们进行()。

A. 与运算

B. 或运算

C. 同或运算

D. 异或运算

7. 提供可靠的端到端的服务是()。

A. 物理层

B. 数据链路层

C. 网络层

D. 传输层

8. TCP滑动窗口的功能是什么?

A. 使得窗口尺寸更大,以便一次可以发送更多的数据,从而更加有效地利用带宽。

B. 窗口的尺寸根据每个数据报进行滑动以接收数据,从而更有效地利用带宽。

C. 在TCP会话过程中,允许动态协商窗口尺寸的大小,从而更加有效地利用带宽。

D. 限制进入的数据,使得分段必须逐个发送,不是有效的带宽的利用方式。

9. IP协议提供的是()。

A. 面向连接的数据报服务

B. 无连接的数据报服务

C. 面向连接的虚电路服务

D. 无连接的虚电路服务

10. 你是公司网管,网络中包括一个单独的IP子网,使用DHCP分配IP。你安装了WINS服务以减少名称解析中的广播交通。过了一些天,用户报告网络太慢了。你调查发现广播没有减少。下一步应如何查看?

A. 检查WINS服务器是否有客户机的注册记录

B. 检查WINS服务器是否有其他WINS服务器的注册记录

C. 检查WINS服务器服务是否开启

D. 检查WINS服务器是否存在静态记录

11. 下列哪种说法是错误的()。

A. IP层可以屏蔽各个物理网络的差异。

B. IP层可以代替各个物理网络的数据链路层工作。

C. IP层可以隐藏各个物理网络的实现细节。

D. IP层可以为用户提供通用的服务。

12. 关于PPP协议, 下列哪一句(或几句)话是错误的?

A. 支持IPX及AppleTalk协议

B. 提供面向连接服务

C. 支持身份认证

D. 动态IP地址分配可由NCP完成

13. 关于网络协议,下列()选项是正确的。

A. 是网民们签订的合同

B. 协议,简单的说就是为了网络信息传递,共同遵守的约定

C. TCP/IP协议只是用于Internet,不能用于局域网

D. 拨号网络对应的协议是IPX/SPX

14. IP校验和的计算方法是将数据分为16位长的段,然后对它们进行()。

A. 同或运算

B. 异或运算

C. 与运算

D. 或运算

15. 接收端发现有差错时,设法通知发送端重发,直到正确的码字收到为止,这种差错控制方法称为()

A. 前向纠错

B. 自动请求重发

C. 冗余检验

D. 混合差错控制

16. IP头部中,"总长"字段指的是()。

A. 数据长度

B. 头部长度+选项长度

C. 头部长度+数据长度

D. 选项长度

17. 传输数据时,FTP服务器和FTP客户机之间建立了()连接。

A. 1个

B. 2个

C. 3个

D. 4个

18. 安装Windows 2003时,TCP/IP网络协议是默认安装的。按照OSI协议,有关该协议的工作层,下面的哪项描述是正确的?

A. TCP在会话层进行工作,IP在传输层进行工作

B. TCP在传输层进行工作,IP在网络层进行工作

C. TCP在网络层进行工作,IP在传输层进行工作

D. TCP和IP都在传输层进行工作

19. IGMP的长度是固定的,其大小为()。

A. 8位

B. 16位

C. 32位

D. 64位

20. IP头部中,"目的IP地址"字段的长度是()。

A. 8位

B. 16位

C. 32位

D. 64位

21. 在OSI模型中表示层的功能由对应TCP/IP层次模型的哪一层完成:

A. 应用层

B. 传输层

C. 网络层

D. 物理层

22. 停-等协议的主要缺点是()。

A. 通信不可靠

B. 信道利用率不高

C. 不能进行全双工通信

D. 需要大容量的存储器

23. 假定MAC地址不在ARP表中,如何找到目的地址的MAC地址()。

A. 发送广播信息到整个局域网

B. 发送广播信息到整个网络

C. 以上都不是

D. A和B都是

24. 各种网络在物理层互连时要求()。

A. 数据传输率和链路协议都相同

B. 数据传输率相同,链路协议可不同

C. 数据传输率可不同,链路协议相同

D. 数据传输率和链路协议都可不同

25. 关于ARP的说法错误的是()。

A. 使用询问/回答机制

B. 缓存用于减少地址解析需要的通信

C. 从物理地址到IP地址的映射

D. 在同一个物理网络中使用

26. "TimeToLive"字段的最大值是()。

A. 127

B. 128

C. 255

D. 256

27. 在DNS区域中创建邮件交换记录时,需要设置优先级来指明邮件服务器的优先选择顺序。请问,哪个数字表示服务器具有最高的优先级?

A. 10

B. 9

C. 1

D. 0

28. Intranet技术主要由一系列的组件和技术构成,Intranet的网络协议核心是()。

A. ISP/SPX

B. PPP

C. TCP/IP

D. SLIP

29. 流量控制实际上是对()的控制。

A. 发送方数据流量

B. 接收方数据流量

C. 发送方和接收方数据

D. 以上都不对

30. 某台客户机手工静态设置了WINS服务器的地址,但同时在DHCP服务器中,又通过服务器选项、作用域选项和客户保留选项分别指定了不同WINS服务器的地址。在客户机进行名称解析时,会采用哪个配置的WINS服务器的地址?

A. 手工静态设置的WINS服务器地址

B. 服务器选项指定的WINS服务器地址

C. 作用域选项指定的WINS服务器地址

D. 客户保留选项指定的WINS服务器地址

31. 对已经是分片的IP数据包再进行分片后得到的每个分片中的标志位是()。

A. 一定是1

B. 一定是0

C. 可能是0

D. 以上皆错

32. 形式为202.117.35.170的IP地址按分类方法划分属于()。

A. A类

B. B类

C. C类

D. D类

33. 您的一台WINS服务器出现复制故障。您希望检查"计算机管理"控制台中的WINS统计资料。下列各项统计信息中,哪一项所显示的信息是关于WINS服务器在最后一次指定复制间隔到来时所启动的复制过程的?

A. 最后一次周期复制。

B. 最后一次手动复制。

C. 最后一次网络复制更新。

D. 以上都不对。

34. 一个网络中的计算机要与其他计算机直接通信,必须有什么?()。

A. 使用相同的操作系统

B. 使用相同的硬件

C. 使用相同的协议

D. 在同一公司内部

35. ping命令就是利用()协议来测试网络的连通性。

A. TCP

B. ICMP

C. ARP

D. IP

36. 在互连网中,以下哪些设备具备路由选择功能()。

A. 具有单网卡的主机

B. 具有多网卡的宿主主机

C. 路由器

D. 以上设备都需要

37. 浏览器和WWW服务器之间传输网页使用的协议是()。

A. IP

B. HTTP

C. FTP

D. Telnet

38. 域名服务器上存放有internet主机的()。

A. 域名

B. IP地址

C. 域名和IP地址

D. E-mail地址

39. ICMP的类型字段中,字段值为0表示的是()。

A. 超时

B. 目标不可达

C. 回显应答

D. 回显请求

40. 网络协议主要要素为()。

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

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

C. 语法、语义、同步

D. 编码、控制信息、同步

(责任编辑:IT教学网)

更多