网络传输协议概述

HTTPS接口测试翻车实录:为什么浏览器能访问而curl报证书错误? 本文深入分析了HTTPS接口测试中浏览器访问正常而curl报证书错误的典型问题。通过对比浏览器、Postman和curl的工具行为差异,结合Nginx日志与Wireshark抓包,揭示了问题根源在于网络架构中HTTPS请求被意外“降级”为HTTP传输,导致SSL握手失败。文章重点探讨了curl工具严格验证机制暴露的`Peer's Certificate issuer is not recognized`错误,并提供了网络配置修正方案与标准化测试流程。 阅读详情

网络传输协议概述

第二讲:TCP/IP协议概述

网络传输协议或简称为传送协议(Communications Protocol),是指计算机通信的共同语言。现在最普及的计算机通信为网络通信,所以“传送协议”一般都指计算机通信的传送协议,如:TCP/IP、NetBEUI等。然而,传送协议也存在于计算机的其他形式通信,例如:面向对象编程里面对象之间的通信;操作系统内不同程序之间的消息,都需要有一个传送协议,以确保传信双方能够沟通无间。

网络协议即网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议。
  一台计算机只有在遵守网络协议的前提下,才能在网络上与其他计算机进行正常的通信。网络协议通常被分为几个层次,每层完成自己单独的功能。通信双方只有在共同的层次间才能相互联系。常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。在局域网中用得的比较多的是IPX/SPX.。用户如果访问Internet,则必须在网络协议中添加TCP/IP协议。

我们简单介绍一下各个传输协议的区别:

IPX/SPX

Internet分组交换/顺序分组交换IPX/SPX(Internetwork Packet Exchange/Sequences Packet Exchange)是novell公司的通信协议集。与NetBEUI形成鲜明区别的是IPX/SPX比较庞大,在复杂环境下具有很强的适应性。这是因为IPX/SPX在设计一开始就考虑了网段的问题,因此它具有强大的路由功能,适合于大型网络使用。当用户端接入NetWare服务器时,IPX/SPX及其兼容协议是最好的选择。但在非Novell网络环境中,一般不使用IPX/SPX。

  IPX主要实现网络设备之间连接的建立维持和终止;SPX协议是IPX的辅助协议,主要实现发出信息的分组、跟踪分组传输,保证信息完整无缺的传输。

  注解:它是Novell公司为了适应网络的发展而开发的通信协议,具有很强的适应性,安装方便,同时还具有路由功能,可以实现多网段间的通信。其中,IPX协议负责数据包的传送;SPX负责数据包传输的完整性。在mcrosoft的NT操作系统中,一般使用NWLink IPX/SPX兼容协议和NWLink NetBIOX两种IPX/SPX的兼容协议,即NWLink协议,该兼容协议继承了IPX/SPX协议的优点,更适应Windows的网络环境。IPX/SPX协议一般可以应用于大型网络(比如Novell)和局域网游戏环境中(比如反恐精英、星际争霸)。不过,如果不是在Novell网络环境中,一般不使用IPX/SPX协议,而是使用IPX/SPX兼容协议,尤其是在Windows 9x/2000组成的对等网中。

  通常要在“高级TCP/IP设置\WINS”启用TCP/IP上的NetBIOS ,以加强局域网的兼容性。

IPX

全称Internetwork Packet Exchange(网间数据包交换),IPX协议是Novell NetWare自带的最底层网络协议,主要用来控制局域网内或局域网之间数据包的寻址和路由,只负责数据包在局域网中的传送,并不保证消息的完整性,也不提供纠错服务。

在局域网中传输数据包时,如果接收节点在同一网段内,通过IPX协议就直接按该节点的ID将数据传给它;如果接收节点不在同一网段内,那么通过IPX协议可以将数据包交给NetWare服务器,再继续传输。在使用过程中,网络管理员可以通过使用相应的IPX路由命令,比如“routing ipx add/set staticroute”表示在IPX路由表中添加或配置静态IPX路由,“routing ipx set global”表示配置全局IPX路由设置。

SPX

全称Sequences Packet Exchange(顺序包交换),SPX协议是基于施乐的Xerox SPP(Sequences Packet Protocol,顺序包协议)协议,同样是由Novell公司开发的一种用于局域网的网络协议。在局域网中,SPX协议主要负责对整个传输的数据进行无差错处理,即纠错。

SPX协议一般和上面介绍的IPX协议组合成IPX/SPX协议来使用,多用于Netware网络环境以及联网游戏。

NetBEUI

NetBEUI,即NetBios Enhanced User Interface,或NetBios增强用户接口。它是NetBIOS的增强版本,曾被许多操作系统采用,例如Windows for Workgroup、Win 9x系列、Windows NT等。NETBEUI是为IBM开发的非路由协议,用于携带NETBIOS通信。在介绍NETBEUI之前我们需要简单介绍一下NETBIOS:

NetBIOS

NetBIOS(NetBIOS Services Protocols网络基本输入/输出系统协议)协议是由IBM公司开发,主要用于数十台计算机的小型局域网。NetBIOS协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,几乎所有的局域网都是在NetBIOS协议的基础上工作的。

NETBIOS 在Windows中,默认情况下在安装TCP/IP后会自动安装NetBIOS。比如在Windows 2000/XP中,当选择“自动获得IP”后会启用DHCP服务器,从该服务器使用NetBIOS设置; 如果使用静态IP地址或DHCP服务器不提供NetBIOS设置,则启用TCP/IP上的NetBIOS。具体的设置方法如下:首先打开“控制面板”,双击“网络连接”图标,打开本地连接属性。接着,在属性窗口的“常规”选项卡中选择“Internet协议(TCP/IP)”,单击“属性”按钮。然后在打开的窗口中,单击“高级”按钮;在“高级TCP/IP设置”窗口中选择“WINS”选项卡,在“NetBIOS设置”区域中就可以相应的NetBIOS设置。

NETBIOS与NETBEUI的区别:NetBIOS最多只能与其他节点建立254个通讯话路。NetBEUI不再有此限制,它允许WindowsNT机器上的每个进程都能够与多达254个节点进行通讯。 NetBIOS名称最多可有15个字符,通话层应用程序通过它来与远程计算机进行通讯。NetBEUI则是通过SMB协议(ServerMessageBlock——服务器消息块,最初应用于3COM公司的LANManager)来实现在逻辑通道中的消息传送的。 NetBEUI总是包含在NetBIOS中,NetBIOS可以运行在几种不同的传输协议上,包括NetBEUI、TCP/IP和IPX/SPX,后三者位于网络层驱动接口与传输层驱动接口之间。但运行在一种传输协议上的NetBIOS服务不能和运行另一种传输协议上的NetBIOS服务通信。NetBIOS可以使用的四种类型的SMB(赋予Windows计算机本地文件重定向功能以便进入远端文件系统).

 Netbios (网络基本输入/输出系统)最初由 IBM,Sytek 作为API开发,使用户软件能使用局域网的资源。自从诞生,Netbios成为许多其他网络应用程序的基础。严格意义上,Netbios 是接入网络服务的接口标准。

  Netbios 原来是作为THE 网络控制 器为 IBM 局域网设计的,是通过特定硬件用来和 网络操作系统  连接的软件层。Netbios经扩展,允许程序使用Netbios接口来操作IBM令牌环结构。Netbios 已被公认为工业标准,通常参照 Netbios-compatible LANs。
  它提供给网络程序一套方法,相互通讯及传输数据。基本上,Netbios 允许程序和网络会话。它的目的是把程序和任何类型的硬件属性分开。它也使软件开发员可以免除以下负担:开发网络错误修复,低层信息寻址和路由。使用Netbios接口,可以为软件开发员做许多工作。
  Netbios使程序和局域网操作能力之间的接口标准化。有它们可以将程序细化到为OSI模型的哪一层所写,使程序能移植到其他网络上。在Netbios局域网环境下,计算机通过名字被系统知道。网络中每台计算机都有通过不同方法编的永久性名称。这些名称将在下面做进一步讨论。
  通过使用Netbios的数据报或广播方式,在Netbios局域网上的pc机建立会话彼此联络。会话允许更多的信息被传送,探测错误,和纠正。通信是在一对一的基础上的。数据报或广播方式允许一台计算机和多台其他的计算机同时通信,但信息大小受限。使用数据报或广播方式没有探测错误和纠正。然而,数据报通信可以不必建立一个会话。
  在这种环境下所有的通信以一种称为“网络控制块“的格式提交给NetBIOS。内存中这些块的分配依赖于用户程序。这些“网络控制块“分配到域中,分别为输入/输出保留。
  在当今的环境中,NetBIOS是使用很普遍的协议。以太网,令牌环,IBM PC网都支持NetBIOS。在它原始版本中,它仅作为程序和网络适配器的接口。从那以后,传输类功能加入NetBIOS,使它功能日益增多。
  在NetBIOS里,面向连接(tcp)和无连接(udp)通信均支持。它支持广播和复播,支持三个分开的服务:命名,会话,数据报。

NETBEUI

NETBEUI协议在许多情形下很有用,是WINDOWS98之前的操作系统的缺省协议。总之NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。所以建议除了TCP/IP协议之外,局域网的计算机最好也安上NetBEUI协议。

  NETBEUI缺乏路由和网络层寻址功能,既是其最大的优点,也是其最大的缺点。因为它不需要附加的网络地址和网络层头尾,所以很快并很有效且适用于只有单个网络或整个环境都 桥接 起来的小工作组环境。
  因为不支持路由,所以NETBEUI永远不会成为企业网络的主要协议。NETBEUI帧中唯一的地址是数据链路层 媒体访问控制 (MAC)地址,该地址标识了网卡但没有标识网络。 路由器 靠网络地址将帧转发到最终目的地,而NETBEUI帧完全缺乏该信息。
   网桥 负责按照 数据链路层地址 在网络之间转发通信,但是有很多缺点。因为所有的广播通信都必须转发到每个网络中,所以网桥的扩展性不好。NETBEUI特别包括了广播通信的记数并依赖它解决命名冲突。一般而言,桥接NETBEUI网络很少超过100台主机。
  近年来依赖于第二层交换器的网络变得更为普遍。完全的转换环境降低了网络的利用率,尽管广播仍然转发到网络中的每台主机。事实上,联合使用100-BASE-T Ethernet,允许转换NetBIOS网络扩展到350台主机,才能避免广播通信成为严重的问题。

NetBEUI协议主要用于本地局域网中,一般不能用于与其他网络的计算机进行沟通,不同于TCP/IP、IPX/SPX协议。在Windows中,要安装NetBEUI协议的方法不尽相同。比如在Windows 98/ME中,只要在“控制面板”中双击“网络”,在打开的属性窗口中“添加”协议,选择Microsoft的NetBEUI协议安装即可。而在Windows XP中,将安装光盘中的“VALUEADD\MSFT\NET\NETBEUI”目录下的“nbf.sys”文件拷贝到%SYSTEMROOT%\SYSTEM32\DRIVERS\目录中,再将“netnbf.inf”文件拷贝到%SYSTEMROOT%\INF\目录中;这样在安装“协议”的时候,在选择窗口中就可以看到“NetBEUI协议”了。

第二讲:TCP/IP协议概述


TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,按发送前的顺序还原,抽出数据并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTERNET中几乎可以无差错地传送数据。在任何一个物理网络中,各站点都有一个机器可识别的地址,该地址叫做物理地址.物理地址有两个特点:

(1)物理地址的长度,格式等是物理网络技术的一部分,物理网络不同,物理地址也不同.

(2)同一类型不同网络上的站点可能拥有相同的物理地址.

以上两点决定了,不能用物理网络进行网间网通讯.

在网络术语中,协议中,协议是为了在两台计算机之间交换数据而预先规定的标准。TCP/IP并不是一个而是许多协议,这就是为什么你经常听到它代表一个协议集的原因,而TCP和IP只是其中两个基本协议而已。

你装在计算机-的TCP/IP软件提供了一个包括TCP、IP以及TCP/IP协议集中其它协议的工具平台。特别是它包括一些高层次的应用程序和FTP(文件传输协议),它允许用户在命令行上进行网络文件传输。



TCP/IP是美国政府资助的高级研究计划署(ARPA)在二十世纪七十年代的一个研究成果,用来使全球的研究网络联在一起形成一个虚拟网络,也就是国际互联网。原始的Internet通过将已有的网络如ARPAnet转换到TCP/IP上来而形成,而这个Internet最终成为如今的国际互联网的骨干网。

如今TCP/IP如此重要的原因,在于它允许独立的网格加入到Internet或组织在一起形成私有的内部网(Intranet)。构成内部网的每个网络通过一种-做路由器或IP路由器的设备在物理上联接在一起。路由器是一台用来从一个网络到另一个网络传输数据包的计算机。在一个使用TCP/IP的内部网中,信息通过使用一种独立的叫做IP包(IPpacket)或IP数据报(IP datagrams)的数据单元进--传输。TCP/IP软件使得每台联到网络上的计算机同其它计算机“看”起来一模一样,事实上它隐藏了路由器和基本的网络体系结构并使其各方面看起来都像一个大网。如同联入以太网时需要确认一个48位的以太网地址一样,联入一个内部网也需要确认一个32位的IP地址。我们将它用带点的十进制数表示,如128.10.2.3。给定一个远程计算机的IP地址,在某个内部网或Internet上的本地计算机就可以像处在同一个物理网络中的两台计算机那样向远程计算机发送数据。

TCP/IP提供了一个方案用来解决属于同一个内部网而分属不同物理网的两台计算机之间怎样交换数据的问题。这个方案包括许多部分,而TCP/IP协议集的每个成员则用来解决问题的某一部分。如TCP/IP协议集中最基本的协议-IP协议用来在内部网中交换数据并且执行一项重要的功能:路由选择--选择数据报从A主机到B主机将要经过的路径以及利用合适的路由器完成不同网络之间的跨越(hop)。

TCP是一个更高层次的它允许运行在在不同主机上的应用程序相互交换数据流。TCP将数据流分成小段叫做TCP数据段(TCP segments),并利用IP协议进行传输。在大多数情况下,每个TCP数据段装在一个IP数据报中进行发送。但如需要的话,TCP将把数据段分成多个数据报,而IP数据报则与同一网络不同主机间传输位流和字节流的物理数据帧相容。由于IP并不能保证接收的数据报的顺序相一致,TCP会在收信端装配TCP数据段并形成一个不间断的数据流。FTP和Telnet就是两个非常流行的依靠TCP的TCP/IP应用程序。

另一个重要的TCP/IP协议集的成员是用户数据报协议(UDP),它同TCP相似但比TCP原始许多。TCP是一个可靠的协议,因为它有错误检查和握手确认来保证数据完整的到达目的地。UDP是一个“不可靠”的协议,因为它不能保证数据报的接收顺序同发送顺序相同,甚至不能保证它们是否全部到达。如果有可靠性要求,则应用程序避免使用它。同许多TCP/IP工具同时提供的SNMP(简单网络管理协议)就是一个使用UDP协议的应用例子。

其它TCP/IP协议在TCP/IP网络中工作在幕后,但同样也发挥着重要作用。例如地址转换协议(ARP)将IP地址转换为物理网络地址如以太网地址。而与其对应的反向地址转换协议(RARP)做相反的工作,即将物理网络地址转换为IP地址。网际控制报文协议(ICMP)则是一个支持性协议,它利用IP完成IP数据报在传输时的控制信息和错误信息的传输。例如,如果一个路由器不能向前发送一个IP数据报,它就会利用ICMP来告诉发送者这里出现了问题。

                          TCP/IP网络的七层结构模型

网络设计者在解决网络体系结构时经常使用ISO/OSI(国际标准化组织/开放系统互连)七层模型,该模型每一层代表一定层次的网络功能。最下面是物理层,它代表着进行数据转输的物理介质,换句话说,即网络电缆。其上是数据链路层,它通过网络接口卡提供服务。最上层是应用层,这里运行着使用网络服务的应用程序。

TCP/IP是同ISO/OSI模型等价的。当一个数据单元从网络应用程序下流到网络接口卡,它通过了一列的TCP/IP模块。这其中的每一步,数据单元都会同网络另一端对等TCP/IP模块所需的信息一起打成包。这样当数据最终传到网卡时,它成了一个标准的以太帧(假设物理网络是以太网)。而接收端的TCP/IP软件通过剥去以太网帧并将数据向上传输过TCP/IP栈来为处于接收状态的应用程序重新恢复原始数据(一种最好的了解TCP/IP工作实质的方法,是使用探测程序来观察网络中的到处流动的帧中被不同TCP/IP模块所加上的信息)。为了勾勒TCP/IP在现实网络世界中所扮演的角色,请考虑当使用HTTP(超文本传输协议)的Web浏览器从连接在Internet上的Web服务器上获取一页HTML数据时所发生的情况。为形成同Web服务器的虚链路,浏览器使用一种被抽象地称为套接口(socket)的高层软件。为了获取Web页,它通过向套接口向套接口写入HTTPGET命令来向Web服务器发出该指令。接下来套接口软件使用TCP协议向Web服务器发出包含GET命令的字节流和位流,TCP将数据分段并将各独立段传到IP模块,该模块将数据段转换成数据报并发送给Web服务器。

如果浏览器和服务器运--在不同物理网络的计算机上(一般情况如此),数据报从一个网络传到另一个网络,直到抵达服务器所在的那个网。最终,数据被传输到目的地址并被重新装配,这样Web服务器通过读自己的套接口来获得数据主干,并进而查看连续的数据流。对浏览器和服务器来说,数据在这一端写入套接口而在另一端出现如同魔术一般,但这只是底下发生的各种复杂的交互,它创造了数据经过网络无缝传输的假象。

这就是TCP/IP所做的:将许多小网联成一个大网。并在这个大网也就是Internet上提供应用程序所需要的相互通信的服务。



第三讲:TCP/IP协议分层


在上一讲我们介绍说tcp/ip协议分为七层。但是一般而言我们吧应用层,会话层,表达层归为一层。

网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如T C P / I P ,是一组不同层次上的多个协议的组合。 T C P / I P 通常被认为是一个四层协议系统

每一层负责不同的功能:


1) 链路层,有时也称作数据链路层或网络接口层,

通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

2) 网络层,有时也称作互联网层,

处理分组在网络中的活动,例如分组的选路。在T C P / I P协 议 族 中 , 网 络 层 协 议 包 括I P 协 议 ( 网 际 协 议 ),I C M P 协议(I n t e r n e t 互联网控制 报 文 协 议 ),以及I G M P 协议(I n t e r n e t 组 管 理 协 议 )。

3) 运输层主要为两台主机上的应用程序提供端到端的通信。

在T C P / I P 协 议 族 中 , 有 两 个互 不 相 同 的 传 输 协 议 :T C P ( 传 输 控 制 协 议 ) 和U D P ( 用 户 数 据 报 协 议 )。

T C P为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,U D P 则 为 应 用 层 提 供 一 种 非 常 简 单 的 服 务 。 它 只 是 把 称 作 数 据 报 的 分 组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途,这一点将在后面看到。

4) 应用层负责处理特定的应用程序细节。几乎各种不同的T C P / I P 实 现 都 会 提 供 下 面 这 些通用的应用程序: 

• Telnet远程登录。
• FTP文件传输协议。
• SMTP简单邮件传送协议。• SNMP简单网络管理协议。 


在 T C P / I P协议族中,网络层 I P 提 供 的 是 一 种 不 可 靠 的 服 务 。 也 就 是 说 , 它 只 是 尽 可 能 快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面,T C P 在不可靠的I P 层 上 提 供 了 一 个 可 靠 的 运 输 层 。 为 了 提 供 这 种 可 靠 的 服 务 ,T C P 采 用 了 超 时 重 传 、 发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能 


TCP/IP的分层   

在T C P / I P 协议族中,有很多种协议。图1 - 4给 出 了 本 书 将 要 讨 论 的 其 他 协 议 。    

I C M P是I P协议的附属协议。I P 层 用 它 来 与 其 他 主 机 或 路 由 器 交 换 错 误 报 文 和 其 他 重 要 信 息 。    

I G M P 是 I n t e r n e t组管理协议。它用来把一个 U D P数据报多播到多个主机。    

互联网的地址 

五类互联网地址  

各类IP地址对应的范围



Internet注册服务(IP地址和DNS域名)过去由NIC来负责,其网络地址是nic.ddn.mil。InterNIC由三部分组成:注册服务(rs.internic.net),目录和数据库服务(ds.internic.net),以及信息服务(is.internic.net)。 

尽管通过I P 地 址 可 以 识 别 主 机 上 的 网 络 接 口 , 进 而 访 问 主 机 , 但 是 人 们 最 喜 欢 使 用 的 还是主机名。在T C P / I P 领域中,域名系统( D N S)是一个分布的数据库,由它来提供I P 地址和主机名之间的映射信息。 

当应用程序用T C P 传 送 数 据 时 , 数 据 被 送 入 协 议 栈 中 , 然 后 逐 个 通 过 每 一 层 直 到 被 当 作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信 息 )。TCP 传给 I P 的 数 据 单 元 称 作 T C P 报 文 段 或 简 称 为 T C P 段( T C Ps e g m e n t )。 I P 传给网络接口层的数据单元称作 I P 数据报 ( I P d a t a g r a m ) 。 通 过 以 太 网 传 输 的 比 特流称作帧 (F r a m e ) 。 以太网数据帧的物理特性是其长度必须在4 6 ~1 5 0 0 字节之间。     


U D P数 据 与 T C P数 据 基 本 一 致 。唯 一 的 不 同 是U D P 传给I P 的 信 息 单 元 称 作U D P 数 据 报(U D P d a t a g r a m),而且 U D P的首部长为 8字节。 

由于T C P 、U D P 、I C M P 和I G M P 都要向I P 传 送 数 据 , 因 此I P 必须在生成的I P 首 部 中 加 入 某 种 标 识 , 以 表 明 数 据 属 于 哪 一 层 。 为 此 ,I P 在 首 部 中 存 入 一 个 长 度 为8 b i t的 数 值 , 称 作 协 议 域 。1 表示为I C M P 协议,2 表示为I G M P 协议,6 表示为T C P 协议,1 7 表示为U D P 协议。 

类似地,许多应用程序都可以使用T C P 或U D P 来 传 送 数 据 。 运 输 层 协 议 在 生 成 报 文 首 部时 要 存 入 一 个 应 用 程 序 的 标 识 符 。T C P 和U D P 都用一个1 6 b i t 的 端 口 号 来 表 示 不 同 的 应 用 程 序 。T C P和 U D P把源端口号和目的端口号分别存入报文首部中。 

网络接口分别要发送和接收 I P 、 A R P和 R A R P  某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个 16 bit的数 据 , 因 此 也 必 须 在 以 太 网 的 帧 首 部 中 加 入类型域。 

分用   

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上 层 协 议 。 这 个 过 程 称 作 分 用 (D e m u l t i p l e x i n g) 


为协议I C M P 和I G M P 定位一直是一件很棘手的事情。在图1 - 4中, 把它们与 I P放在同一层上,那是因为事实上它们是IP的附属协议。但是在这里,我们又把它们放在 I P层的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。 

对于 A R P和R A R P, 我 们 也 遇 到 类 似 的 难 题 。 在 这 里 把 它 们 放 在 以 太 网 设 备 驱 动 程序的上方,这是因为它们和I P 数据报一样,都有各自的以太网数据帧类型。 

当进一步描述 T C P的细节时,我们将看到协议确实是通过目的端口号、源I P 地 址 和 源 端 口号进行解包的。 

客户-服务器模型   

大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。

可以将这种服务分为两种类型:重复型或并发型。

重复型服务器通过以下步骤进行交互: 

  1. I1.  等待一个客户请求的到来。

  2. I2.  处理客户请求。

  3. I3.  发送响应给发送请求的客户。

  4. I4.  返回I 1 步。

     重复型服务器主要的问题发生在I 2状 态 。 在 这 个 时 候 , 它 不 能 为 其 他 客 户 机 提 供 服 务 。 

并发型服务器采用以下步骤:   

C1.等待一个客户请求的到来。

C2.启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。

C3.返回 C 1步。

并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。 

一般来说,T C P 服务器是并发的,而U D P 服 务 器 是 重 复 的 , 但 也 存 在 一 些 例 外 。    

端口号   

T C P 和 U D P采用 1 6 b i t的 端 口 号 来 识 别 应 用 程 序 。    

服务器一般都是通过知名端口号来识别的。例如,对于每个T C P / I P 实现来说, F T P服务器的 T C P端 口 号 都 是 2 1 ,每个T e l n e t 服 务 器 的 T C P端 口 号 都 是 2 3 ,每个T F T P ( 简 单 文 件 传 送 协议 )服 务 器 的 U D P端 口 号 都 是 6 9 。任何T C P / I P 实 现 所 提 供 的 服 务 都 用 知 名 的1 ~1 0 2 3 之 间 的 端口号。这些知名端口号由I n t e r n e t 号分配机构( I n t e r n e t A s s i g n e d N u m b e r s A u t h o r i t y , I A N A)来管理。 

客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。 

大多数 T C P / I P 实 现 给 临 时 端 口 分 配 1 0 2 4 ~ 5 0 0 0 之 间 的 端 口 号 。  

链路层作用目的:

 在 T C P / I P 协 议 族 中 , 链 路 层 主 要 有 三 个 目 的 :( 1 )为 I P 模 块 发 送 和接收 I P 数 据 报 ; ( 2 )为 A R P 模块发送 A R P 请 求 和 接 收 A R P 应 答 ; ( 3 )为R A R P 发送 R A R P 请求和接收 R A R P 应答。

T C P / I P 支 持 多 种 不 同 的 链 路 层 协 议 , 这 取 决 于 网 络 所 使 用 的 硬 件 , 如 以太 网 、 令 牌 环 网 、 F D D I ( 光 纤 分 布 式 数 据 接 口 ) 及 R S- 2 3 2 串 行 线 路 等 。 

一:以太网和IEEE802封装

在 T C P / I P 世 界 中 , 以 太 网 I P 数 据 报 的 封 装 是 在 R F C 8 9 4 中定义的, I E E E 8 0 2网络的 I P 数据报封装是在 R F C 1 0 4 2  中定义的。主机需求 R F C要求每台 I n t e r n e t 主机都与一个 10 Mb/s 的以太网电缆相连接: 

1) 必须能发送和接收采用 RFC 894(以太网)封装格式的分组。
2) 
应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。
3) 
也许能够发送采用 RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是 RFC 894分组。 

两种帧格式都采用 4 8 b i t ( 6 字节)的目的地址和源地址( 8 0 2 . 3 允许使用 1 6 b i t 的地址,但一般是 4 8 b i t 地址)。 这就是我们所称的硬件地址  。接下来的 2个字节在两种帧格式中互不相同。在802标准定义的帧格式中 , 长度字段是指它后续数据的字节长度,但不包括 CRC检验码 。 以 太 网 的 类 型 字 段 定 义 了 后 续 数 据 的 类 型 。在 8 0 2 标准定义的帧格式中,类型字段则由后续的子网接入协议( S u b - n e t w o r k A c c e s sP r o t o c o l , S N A P )的首部给出。幸运的是, 8 0 2定义 的 有 效 长 度 值 与 以 太 网 的 有 效 类 型 值 无 一相同,这样,就可以对两种帧格式进行区分。

在以太网帧格式中,类型字段之后就是数据;而在 8 0 2 帧格式中,跟随在后面的是 3 字节的802.2 LLC和5字节的802.2 SNAP。目的服务访问点( Destination Service Access Point,D S A P ) 和 源 服 务 访 问 点 ( S o u r c e S e r v i c e A c c e s s P o i n t , S S A P ) 的 值 都 设 为 0 x a a 。 C t r l 字段的值设为 3 。随后的 3 个字节 o rg c o d e 都置为 0 。再接下来的 2 个 字 节 类 型 字 段 和 以 太 网 帧 格 式 一 样。C R C 字 段 用 于 帧 内 后 续 字 节 差 错 的 循 环 冗 余 码 检 验 ( 检 验 和 )( 它 也 被 称 为 F C S 或帧检验


8 0 2 . 3 标 准 定 义 的 帧 和 以 太 网 的 帧 都 有 最 小 长 度 要 求 。 8 0 2 . 3 规 定 数 据 部 分 必 须 至 少 为 3 8字节,而对于以太网,则要求最少要有 4 6 字 节 。 为 了 保 证 这 一 点 , 必 须 在 不 足 的 空 间 插 入 填 充( p a d )字节。在开始观察线路上的分组时将遇到这种最小长度的情况。 

二:SLIP:串行线路IP    

S L I P 的全称是 S e r i a l L i n e I P 。 它 是 一 种 在 串 行 线 路 上 对 I P 数 据 报 进 行 封 装 的 简 单 形 式 , 在R F C 1 0 5 5 [ R o m k e y 1 9 8 8 ] 中有详细描述。S L I P 适用于家庭中每台计算机几乎都有的 R S - 2 3 2串行端口和高速调制解调器接入 I n t e r n e t 。

下面的规则描述了 S L I P 协议定义的帧格式:

1 ) I P 数据报以一个称作 E N D( 0 x c 0 ) 的 特 殊 字 符 结 束 。 同 时 , 为 了 防 止 数 据 报 到 来 之 前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个 E N D字 符 ( 如 果 有 线路噪声,那么 E N D 字 符 将 结 束 这 份 错 误 的 报 文 。 这 样 当 前 的 报 文 得 以 正 确 地 传 输 , 而 前 一 个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。

2 ) 如果 I P 报 文 中 某 个 字 符 为 E N D , 那 么 就 要 连 续 传 输 两 个 字 节 0 x d b 和 0 x d c 来 取 代 它 。0 x d b 这个特殊字符被称作 S L I P 的 E S C 字符,但是它的值与 A S C I I码的 E S C 字符( 0 x 1 b )不同。

3) 如果 I P 报 文 中 某 个 字 符 为 S L I P 的 E S C 字 符 , 那 么 就 要 连 续 传 输 两 个 字 节 0 x d b 和 0 x d d 来取代它。 

图 2 - 2 中 的 例 子 就 是 含 有 一 个 E N D 字 符 和 一 个 E S C 字符的 I P 报 文 。 在 这 个 例 子 中 , 在 串 行线路上传输的总字节数是原 I P 报文长度再加 4 个字节。 


S L I P 是一种简单的帧封装方法,还有一些值得一提的缺陷:
1) 每一端必须知道对方的 I P 地址。没有办法把本端的 I P 地址通知给另一端。
2) 数据帧中没有类型字段(类似于以太网中的类型字段 )。如果一条串行线路用于 SLIP ,那么它不能同时使用其他协议。

3 ) SLIP没有在数据帧中加上检验和 (类似于以太网中的CRC字段)。如果SLIP 传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器 可 以 检 测 并 纠 正 错 误 报 文 )。 这 样 , 上层协议提供某种形式CRC 就显得很重要 。

尽管它本身的描述是一种非标准的协议,但是随着调制解调器的速率和可靠性的提高, S L I P 越来越流行。现在,它的许多产品可以公开获得,而且很多厂家都支持这种协议。 

三: PPP:点对点协议   

P P P ,点对点协议修改了 S L I P 协议中的所有缺陷。 P P P 包括以下三个部分:

1 ) 在串行链路上封装 I P 数据报的方法。 P P P 既支持数据为 8 位 和 无 奇 偶 检 验 的 异 步 模 式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。

2) 建立、配置及测试数据链路的链路控制协议( L C P : L i n k C o n t r o l P r o t o c o l )。它允许通信双方进行协商,以确定不同的选项。

3) 针对不同网络层协议的网络控制协议( N C P : N e t w o r k C o n t r o l P r o t o c o l )体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。例如,IP NCP允许双方商定是否对报文首部进行压缩,类似于 C S L I P (缩写词 N C P 也可用在 T C P 的前面)。 

P P P 数 据 帧 的 格 式 看 上 去 很 像 I S O 的 H D L C ( 高 层 数 据 链 路 控 制 ) 标 准 。 图 2 - 3 是 P P P 数据帧的格式。每一帧都以标志字符 0 x 7 e 开始和结束。紧接着是一个地址字节,值始终是 0 x ff ,然后是一个值为 0 x 0 3 的控制字节。 


接下来是协议字段,类似于以太网中类型字段的功能。当它的值为 0 x 0 0 2 1 时 , 表 示 信 息字 段 是 一 个 I P 数 据 报 ; 值 为 0 x c 0 2 1时 , 表 示 信 息 字 段 是 链 路 控 制 数 据 ; 值 为 0 x 8 0 2 1 时 , 表 示信息字段是网络控制数据。

C R C 字段(或 F C S , 帧 检 验 序 列 ) 是 一 个 循 环 冗 余 检 验 码 , 以 检 测 数 据 帧 中 的 错 误 。

由于标志字符的值是 0 x 7 e,因此当该字符出现在信息字段中时, P P P 需 要 对 它 进 行 转 义 。在同步链路中,该过程是通过一种称作比特填充 (bit stuffing)的硬件技术来完成的 [Tanenbaum1 9 8 9 ]。在异步链路中,特殊字符 0 x 7 d用作转义字符。当它出现在 P P P 数 据 帧 中 时 , 那 么 紧 接着的字符的第 6个比特要取其补码,具体实现过程如下:

1) 当遇到字符 0 x 7 e 时,需连续传送两个字符: 0 x 7 d 和 0 x 5 e ,以实现标志字符的转义。
2) 当遇到转义字符 0 x 7 d 时,需连续传送两个字符: 0 x 7 d 和 0 x 5 d ,以实现转义字符的转义。3 ) 默 认 情 况 下 , 如 果 字 符 的 值 小 于 0 x 2 0 ( 比 如 , 一 个 A S C I I 控 制 字 符 ), 一 般 都 要 进 行 转

义。例如,遇到字符 0 x 0 1 时需连续传送 0 x 7 d 和 0 x 2 1 两个字符(这时,第 6 个比特取补码后变为1,而前面两种情况均把它变为 0)。

这样做的原因是防止它们出现在双方主机的串行接口驱动程序或调制解调器中,因为有时它们会把这些控制字符解释成特殊的含义。另一种可能是用链路控制协议来指定是否需要对这 3 2 个 字 符 中 的 某 一 些 值 进 行 转 义 。 默 认 情 况 下 是 对 所 有 的 3 2 个 字 符 都 进 行 转 义 。

与 S L I P 类似,由于 P P P 经 常 用 于 低 速 的 串 行 链 路 , 因 此 减 少 每 一 帧 的 字 节 数 可 以 降 低 应 用程序的交互时延。利用链路控制协议,大多数的产品通过协商可以省略标志符和地址字段,并且把协议字段由 2 个字节减少到 1个字节。如果我们把 P P P 的帧格式与前面的 S L I P 的帧格式

(图 2 - 2 ) 进 行 比 较 会 发 现 , P P P 只 增 加 了 3 个 额 外 的 字 节 : 1 个 字 节 留 给 协 议 字 段 , 另 2 个给C R C 字段使用。另外,使用 I P 网络控制协议,大多数的产品可以通过协商采用 V a n J a c o b s o n 报文首部压缩方法(对应于 C S L I P 压缩),减小 I P 和 T C P 首部长度。

总的来说, P P P 比 S L I P 具 有 下 面 这 些 优 点 : ( 1 ) P P P 支 持 在 单 根 串 行 线 路 上 运 行 多 种 协 议 ,不只是 I P 协议; (2) 每一帧都有循环冗余检验; (3) 通信双方可以进行 I P 地址的动态协商(使用
I P 网络控制协议); (4) 与 C S L I P 类似,对 T C P 和 I P 报文首部进行压缩; ( 5 ) 链 路 控 制 协 议 可 以对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加 3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

尽管 P P P比 S L I P 有更多的优点,但是现在的 S L I P 用户仍然比 P P P 用户多。随着产品越来越多,产家也开始逐渐支持PPP,因此最终PPP应该取代SLIP。 

四:环回接口   

大多数的产品都支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过 T C P / I P 进行通信。 A 类网络号 1 2 7 就 是 为 环 回 接 口 预 留 的 。 根 据 惯 例 ,大多数系统把 I P 地址 1 2 7 . 0 . 0 . 1 分配给这个接口,并命名为 l o c a l h o s t 。一个传给环回接口的 I P 数据报不能在任何网络上出现。 

我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当I P 数据报离开网络层时把它返回给自己。


图中需要指出的关键点是:
1) 传给环回地址(一般是 1 2 7 . 0 . 0 . 1 )的任何数据均作为 I P 输入。
2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义包含主机本身。

3 ) 任何传给该主机 I P 地 址 的 数 据 均 送 到 环 回 接 口 。

第四讲:TCP/IP协议之网络层IP(网际协议)详解

IP是 T C P / I P 协 议 族 中 最 为 核 心 的 协 议 。 所 有 的 T C P 、 U D P 、 I C M P 及 I G M P 数据都以 I P 数据报格式传输。iP 提 供 不 可 靠 、 无 连 接 的 数 据 报 传 送服务 。

不可靠( u n r e l i a b l e)的意思是它不能保证 I P 数据报能成功地到达目的地。 I P 仅 提 供 最 好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P 有 一 个 简 单 的 错 误处理算法:丢弃该数据报,然后发送 I C M P 消 息 报 给 信 源 端 。 任 何 要 求 的 可 靠 性 必 须 由 上 层 来提供(如 T C P )。 

无连接( c o n n e c t i o n l e s s ) 这 个 术 语 的 意 思 是 I P 并 不 维 护 任 何 关 于 后 续 数 据 报 的 状 态 信 息 。每个数据报的处理是相互独立的。这也说明, I P数 据 报 可 以 不 按 发 送 顺 序 接 收 。 如 果 一 信 源向相同的信宿发送两个连续的数据报(先是 A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此 B可能在 A到达之前先到达。 

IP首部   


最 高 位 在 左 边 , 记 为 0 bit ; 最 低 位 在 右 边 , 记 为 3 1 b i t 。    

4 个字节的 3 2 b i t 值 以 下 面 的 次 序 传 输 : 首 先 是 0 ~ 7 b i t ,其次 8 ~ 1 5 b i t ,然后 1 6 ~ 2 3 b i t ,最后是 2 4 ~ 3 1 b i t 。 这 种 传 输 次 序 称 作 b i g e n d i a n 字 节 序 。 由 于 T C P / I P 首 部 中 所 有 的 二 进 制 整 数在网络中传输时都要求以这种次序,因此它又称作网络字节序。以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序。

目 前 的 协 议 版 本 号 是 4 ,因此 I P 有时也称作 I P v 4 。     

首部长度指的是首部占 32 bit字的数目,包括任何选项。由于它是一个 4比特字段,因此首部最长为 6 0 个字节。 

服 务 类 型 ( T O S ) 字 段 包 括 一 个 3 b i t 的 优 先 权 子 字 段 ( 现 在 已 被 忽 略 ), 4 b i t 的 T O S 子字段和 1 b i t 未 用 位 但 必 须 置 0 。 4 b i t 的 T O S 分 别 代 表 : 最 小 时 延 、 最 大 吞 吐 量 、 最 高 可 靠 性 和 最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。  

图3 - 2列出了对不同应用建议的 T O S值 。 在 最 后 一 列 中 给 出 的 是 十 六 进 制 值 , 因 为 这 就 是在后面将要看到的 t c p d u m p 命令输出。 


总长度字段是指整个 I P 数 据 报 的 长 度 , 以 字 节 为 单 位 。 利 用 首 部 长 度 字 段 和 总 长 度 字 段 ,就可以知道 I P 数据报中数据内容的起始位置和长度。由于该字段长 1 6 比特,所以 I P 数据报最长可达 6 5 5 3 5 字节。 当 数 据 报 被 分 片 时 , 该 字 段 的 值 也 随 着 变 化 。尽 管 可 以 传 送 一 个 长 达 6 5 5 3 5 字节的 I P数 据 报 , 但 是 大 多 数 的 链 路 层 都 会 对 它 进 行 分 片 。而且,主机也要求不能接收超过 5 7 6 字节的数据报。由于 T C P 把 用 户 数 据 分 成 若 干 片 , 因 此 一般来说这个限制不会影响 T C P 。在后面的章节中将遇到大量使用 U D P 的应用( R I P , T F T P ,B O O T P , D N S ,以及 S N M P ), 它 们 都 限 制 用 户 数 据 报 长 度 为5 1 2 字 节 , 小 于 5 7 6 字 节 。 但 是 ,事实上现在大多数的实现(特别是那些支持网络文件系统 N F S 的实现)允许超过 8 1 9 2字节的I P 数据报。 总长度字段是I P 首 部 中 必 要 的 内 容 , 因 为 一 些 数 据 链 路 ( 如 以 太 网 ) 需 要 填 充 一 些 数 据以 达 到 最 小 长 度 。 尽 管 以 太 网 的 最 小 帧 长 为 4 6 字 节,但是 I P 数 据 可 能 会 更 短 。 如果 没 有 总 长 度 字 段 , 那 么 I P 层就不知道 4 6 字 节 中 有 多 少 是 I P 数 据 报 的 内 容 。 

标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加  1。    

T T L( t i m e - t o - l i v e ) 生 存 时 间 字 段 设 置 了 数 据 报 可 以 经 过 的 最 多 路 由 器 数 。 它 指 定 了 数 据报 的 生 存 时 间 。 T T L 的 初 始 值 由 源 主 机 设 置 ( 通 常 为 3 2 或 6 4 ), 一 旦 经 过 一 个 处 理 它 的 路 由 器 ,它的值就减去 1。当该字段的值为 0 时,数据报就被丢弃,并发送 I C M P 报文通知源主机。 

首部检验和字段是根据 I P 首部计算的检验和码。它不对首部后面的数据进行计算。 I C M P 、I G M P 、 U D P 和 T C P 在它们各自的首部中均含有同时覆盖首部和数据检验和码。 

最后一个字段是任选项,是数据报中的一个可变长的可选信息。目前,这些任选项定义    如下:

  • 安全和处理限制(用于军事领域)

  • 记录路径(让每个路由器都记下它的 I P 地址)

  • 时 间 戳 ( 让 每 个 路 由 器 都 记 下 它 的 I P 地 址 和 时 间 )

  • 宽 松 的 源 站 选 路 ( 为 数 据 报 指 定 一 系 列 必 须 经 过 的 I P 地址)

  • 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址)。   

    这些选项很少被使用,并非所有的主机和路由器都支持这些选项。选项字段一直都是以 32 bit作为界限,在必要的时候插入值为 0的填充字节。这样就保证I P 首部始终是 32 bit 的 整 数 倍 ( 这 是 首 部 长 度 字 段 所 要 求 的 )。 

IP路由选择   

I P 路 由 选 择 是 简 单 的 , 特 别 对 于 主 机 来 说 。 如 果 目 的 主 机 与 源 主 机 直 接 相连 ( 如 点 对 点 链 路 ) 或 都 在 一 个 共 享 网 络 上 ( 以 太 网 或 令 牌 环 网 ),那么 I P 数 据 报 就 直 接 送 到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。大多数的主机都是采用这种简单机制。 

在 一 般 的 体 制 中 , I P 可以从 T C P 、 U D P 、 I C M P 和 I G M P 接 收 数 据 报 ( 即 在 本 地 生 成 的 数 据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。 I P 层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次。当数据报来自某个网络接口时, I P 首先检查目的 I P 地址是否为本机的 I P 地址之一或者 I P 广 播 地 址 。 如 果确实是这样,数据报就被送到由 I P 首 部 协 议 字 段 所 指 定 的 协 议 模 块 进 行 处 理 。 如 果 数据目 的不是这些地址,那么( 1 )如果 I P 层 被 设 置 为 路 由 器 的 功 能 , 那 么 就 对 数 据 报 进 行 转 发(也就是说,像下面对待发出的数据报一样处理);否则( 2)数据报被丢弃。

路由表中的每一项都包含下面这些信息:
• 目的I P 地址。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定(如下所述)。主机地址有一个非 0的主机号(见图 1 - 5),以指定某一特定的主机,而网络地址中的主机号为0,以指定网络中的所有主机(如以太网,令牌环网)。

• 下一站(或下一跳)路由器( n e x t - h o p r o u t e r )的 I P 地址,或者有直接连接的网络 I P 地址。下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。

• 标志。其中一个标志指明目的 I P 地 址 是 网 络 地 址 还 是 主 机 地 址 , 另 一 个 标 志 指 明 下 一站 路 由 器 是 否 为 真 正 的 下 一 站 路 由 器 , 还 是 一 个 直 接 相 连 的 接 口

• 为数据报的传输指定一个网络接口。
I P 路 由 选 择 是 逐 跳 地 ( h o p - b y - h o p ) 进 行 的 。 从 这 个 路 由 表 信 息 可 以 看 出 , I P 并不知道到达 任 何 目 的 的 完 整 路 径 ( 当 然 , 除 了 那 些 与 主 机 直 接 相 连 的 目 的 )。所有的 I P 路 由 选 择 只 为 数据报传输提供下一站路由器的 I P 地 址 。 它 假 定 下 一 站 路 由 器 比 发 送 数 据 报 的 主 机 更 接 近 目 的 ,而且下一站路由器与该主机是直接相连的。

I P 路由选择主要完成以下这些功能:
1) 搜索路由表,寻找能与目的 I P 地 址 完 全 匹 配 的 表 目 ( 网 络 号 和 主 机 号 都 要 匹 配 )。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。

2) 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。关于这一点我们在下一节中进行讨论。

3) 搜 索 路 由 表 , 寻 找 标 为 “ 默 认 ( d e f a u l t )” 的 表 目 。 如 果 找 到 , 则 把 报 文 发 送 给 该 表 目指定的下一站路由器。


如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。默认路 由 , 以 及 下 一 站 路 由 器 发 送 的 I C M P 间 接 报 文 ( 如 果 我 们 为 数 据 报 选 择 了 错 误 的 默 认 路 由 ),是 I P 路由选择机制中功能强大的特性。 




肺癌术后随访离散选择实验(DCE)设计与SAS实现 随着肺癌早期诊断和治疗技术的进步,肺癌患者的生存率显著提高,术后随访管理成为提升患者生活质量的关键环节。然而,如何在有限的医疗资源下设计出既符合患者需求又具有成本效益的随访方案,是临床决策面临的重要挑战。 离散选择实验(Discrete Choice Experiment, DCE)是一种定量研究方法,通过模拟真实世界的选择情境,测量患者对不同随访方案属性的偏好程度。本研究旨在通过DCE方法,系统评估肺癌术后患者对随访服务的偏好,为制定以患者为中心的随访策略提供循证依据。 阅读详情

相关推荐

避开地图定位偏差!手把手教你用Python实现火星坐标与WGS84精准转换

本文深入解析了国内地图服务中火星坐标(GCJ-02)与国际标准WGS84坐标系之间的偏差问题,并提供了基于Python的精准转换解决方案。文章详细阐述了坐标转换的核心原理,手把手教你构建可复用的转换工具包,并演示如何将其集成到实际应用(如Flask API)中,帮助开发者和数据分析师有效解决地图定位不准、多源数据无法对齐的痛点,提升地理信息处理能力。

weixin_29250403的博客 125

简单了解几种常见的网络通信协议

常见的网络协议有:TCP/IP协议、UDP协议、HTTP协议、FTP协议、Telnet协议、SMTP协议、NFS协议等。这里主要简述一下前三种协议。 一.TCP/IP协议 1.什么是TCP/IP协议? TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。 2.TCP/IP协议的组成 TCP/IP协议...

cdfdddcs的博客 8万+

Linux下开机异常(fsck exited with status code 4)

Linux下开机异常事情是这样的,本来我呢跑着程序听着歌,结果忽然就死机了,我只能强制关机,再次打开系统的时候,就提示这样fsck from util-linux 2.26.2 /dev/sda10 contains a file system with errors, check forced. /dev/sda10: Inodes that were part of a corrupted pr

芳草碧连天 2万+

网络传输协议

前文说TCP/IP的设计思想包括分层、模块化和松耦合,使其成为后来的互联网标准。1.分层应用层传输层网络层网络接口层。

Au_ust的博客 1753

edusrc挖掘思路

edusrc挖掘思路前言思路信息搜集系统账号常见漏洞实战分享1、确定目标,语法:site:xxxx.edu.cn2、账号密码组成我们知道了,谷歌语法查找工号3、爆破登录系统4、确定功能,抓具体的url5、添加单引号,报错,是mssql6、报数据库版本,到这一步就可以交了,已经是中危了后记 前言 一月份的时候偶然注意到edusrc,起初是抱着学习的心态去挖几个洞,可是后面发现有证书,而且还贼好看,于是我动了凡心,一顿操作也拿了几本,广西民大、山东理工、同济,未到的有浙大、上海理工,证书要求证书图片可以在我个人

qq_45414878的博客 2万+

【TestNG自动化测试框架详解】

TestNG是一款设计测试用例执行流程的测试框架。

weixin_43936332的博客 1540

【网络】十大网络协议

http、https、http/3、tcp、udp、ftp、smtp、websocket、ip、ssh

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 7270

基于YOLO的印章检测及文字识别

针对印章自动化检测与文字识别需求,提出了一种融合改进YOLO模型与OCR技术的端到端解决方案,旨在解决复杂背景干扰、印章残缺变形及环形文字排列等难题

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 8224

TCP/IP 协议、HTTP 协议和 FTP 协议详解

本文介绍了常见的网络协议主要包括TCP/IP协议、HTTP协议、FTP协议等。并详细介绍了TCP/IP协议的模型和HTTP网络协议及其请求包和响应包内容

青灯文案的博客 1万+

手把手实现3D肺结节检测:基于Faster R-CNN的从CT处理、训练到部署的五步代码级实战与避坑指南

亲爱的同学,当你能完整实现“3D Faster R-CNN肺部结节检测系统”,你会发现医学影像AI的毕设课题充满挑战与成就感。我们围绕3D Faster R-CNN模型,从数据处理、模型搭建到实验验证,一步步带你打造一个能精准检测肺部结节的智能系统,让你的毕设既体现技术深度,又能为肺部疾病早期诊断贡献实用价值。是专为3D医学影像设计的目标检测模型,能在三维CT数据中自动定位、识别肺部结节——这一课题兼具“临床价值”和“技术挑战性”,是毕设的优质选择,能充分展现你的工程能力和科研敏感度。

LXY_LOVE36的博客 308

DeepCAD: 使用深度自监督学习技术在Python中进行钙成像去噪的全面指南

钙成像是一种用于观察神经活动的技术,通过检测细胞内钙离子的变化来推断神经元的活动。由于其高时空分辨率和对活体组织的适应性,钙成像已经成为神经科学研究中的重要工具。然而,钙成像数据往往伴随着各种噪声,这些噪声可能来自于设备、生物样本或环境。为了获得准确的神经活动信息,去噪是非常关键的。深度自监督学习是一种使用未标记数据进行训练的机器学习方法。与传统的监督学习不同,它不需要大量的标记数据,而是通过学习数据的内部结构和模式来提取有用的特征。DeepCAD是一个基于深度自监督学习的钙成像去噪工具。

qq_38334677的博客 758

常见网络协议汇总,真的是详细到家了!

常见网络协议汇总,真的是详细到家了!

weixin_51725318的博客 3837

Oracle EBS的帐套由“4C”构成,而华为MetaERP将其发展为“6C”

华为MetaERP从OracleEBS的"4C"架构升级为"6C",实现核算理念革新。核心突破在于将会计科目、核算维度和核算单元解耦,形成"科目表+维度库"的灵活架构。新架构优势显著:1)科目回归会计本质,管理维度独立扩展;2)支持无限维度的精细化核算;3)实现数据权限隔离和内部交易自动化;4)采用元数据驱动设计,为AI应用奠定基础。这一平台化架构解决了大型企业在全球化、多元化发展中的核算难题,相比传统架构具有更强的灵活性和扩展性。

金牌架构师 204

linux属于网络传输协议,网络传输协议概述

概述:指服务器和客户端间进行通信时的约束和规范,客户端与服务端的数据交互并不是杂乱无章的,需要遵照(基于)一定的规范进行常见的协议:a) HTTP、HTTPS 超文本传输协议b) FTP 文件传输协议c) SMTP 简单邮件传输协议本文主要介绍http超文本传输协议。1、HTTP协议即超文本传输协议,网站是基于HTTP协议的,例如网站的图片、CSS、JS等都是基于HTTP协...

weixin_35982453的博客 221

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

网络传输协议概述——第二讲:TCP/IP协议概述

TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入I

sanpintian的专栏 3225

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

网络传输协议概述——第一讲:传输协议概述

网络传输协议或简称为传送协议(Communications Protocol),是指计算机通信的共同语言。现在最普及的计算机通信为网络通信,所以“传送协议”一般都指计算机通信的传送协议,如:TCP/IP、NetBEUI等。然而,传送协议也存在于计算机的其他形式通信,例如:面向对象编程里面对象之间的通信;操作系统内不同程序之间的消息,都需要有一个传送协议,以确保传信双方能够沟通无间。 网络协议

sanpintian的专栏 3623

linux用于网络传输的协议,Linux 网络协议的概述

网络层协议网络层协议主要包括 IP、ICMP(网络控制报文协议)、ARP(地址解析协议)IP协议该协议被设计成互联分组交换通信网,以形成一个网际通信环境。它负责在源主机和目的地主机之间传输来自其较高层软件的称为数据报文的数据块,它在源和目的地之间提供非连接型传递服务。IP主要有四个主要功能:数据传送寻址路由选择数据报文的分段IP的主要目的是为数据输入/输出网络提供基本算法,为高层协议提供无连接的传...

weixin_39637260的博客 1078

网络传输协议概述——第三讲:TCP/IP协议分层

在上一讲我们介绍说tcp/ip协议分为七层。但是一般而言我们吧应用层,会话层,表达层归为一层。 网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如 T C P / I P ,是一组不同层次上的多个协议的组合。 T C P / I P 通常被认为是一个四层协议系统 每一层负责不同的功能: 1) 链路层,有时也称作数据链路层或网络接口层, 通常包括操作

sanpintian的专栏 2102

网络传输协议概述——第四讲:TCP/IP协议之链路层详解

链路层作用目的:  在 T C P / I P 协 议 族 中 , 链 路 层 主 要 有 三 个 目 的 :( 1 )为 I P 模 块 发 送 和接收 I P 数 据 报 ; ( 2 )为 A R P 模块发送 A R P 请 求 和 接 收 A R P 应 答 ; ( 3 )为R A R P 发送 R A R P 请求和接收 R A R P 应答。 T C

daiyelang的专栏 1690

网络传输协议概述——第三讲:TCP/IP协议之链路层详解

链路层作用目的:   在 T C P / I P 协 议 族 中 , 链 路 层 主 要 有 三 个 目 的 :( 1 )为 I P 模 块 发 送 和接收 I P 数 据 报 ; ( 2 )为 A R P 模块发送 A R P 请 求 和 接 收 A R P 应 答 ; ( 3 )为R A R P 发送 R A R P 请求和接收 R A R P 应答。 T C P /

sanpintian的专栏 1407

网络传输协议概述——第四讲:TCP/IP协议之网络层IP(网际协议)详解

IP是 T C P / I P 协 议 族 中 最 为 核 心 的 协 议 。 所 有 的 T C P 、 U D P 、 I C M P 及 I G M P 数据都以 I P 数据报格式传输。iP 提 供 不 可 靠 、 无 连 接 的 数 据 报 传 送服务 。 不可靠( u n r e l i a b l e)的意思是它不能保证 I P 数据报能成功地到达目的地。 I

sanpintian的专栏 2567

网络传输协议概述——第五讲:TCP/IP协议之网络层IP(网际协议)详解

2012-04-12 14:49 523人阅读 评论(0) 收藏 举报 网络路由器c算法存储 IP是 T C P / I P 协 议 族 中 最 为 核 心 的 协 议 。 所 有 的 T C P 、 U D P 、 I C M P 及 I G M P 数据都以 I P 数据报格式传输。iP 提 供 不 可 靠 、 无 连 接 的 数 据 报 传 送服务 。

daiyelang的专栏 1484

HTTP协议

《HTTP权威指南》读书笔记---HTTP概述 :http://blog.youkuaiyun.com/sunorry/article/details/8221888 HTTP协议详解: http://www.php-note.com/article/detail/430 转载于:https://www.cnblogs.com/zhuiluoyu/p/4675078.html...

weixin_30553065的博客 57

WebRTC | 网络传输协议 RTP 和 RTCP

WebRTC | 网络传输协议 RTP 和 RTCP

ProgramNovice的博客 2989

【Linux网络编程】1.协议的概念、分层模型、网络应用程序设计模式、网络传输流程、协议格式

【Linux网络编程】1.协议的概念、分层模型、网络应用程序设计模式、网络传输流程、协议格式。

因心,三人水的博客 768
上一篇: CALayer和UIView的关系
下一篇: 常用核心动画效果
Allen_iOS
博客等级 码龄12年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值