TCP使用字节流通信,其中TCP段中的数据被视为没有记录或字段边界的字节序列。下表描述了TCP标头中的关键字段。
TCP标头中的关键字段
TCP段中数据的第一个字节的序列号。
发送方希望接下来从连接的另一端接收的字节的序列号。
发送此TCP段以存储传入段的主机上TCP缓冲区的当前大小。
验证TCP标头和TCP数据的位级完整性。
TCP端口提供用于传送TCP段的特定位置。低于1024的端口号是众所周知的端口,由互联网号码分配机构(IANA)分配。下表列出了一些众所周知的TCP端口。
众所周知的TCP端口
为了使应用程序以标准方式访问核心TCP/IP协议提供的服务,WindowsServer2003等网络操作系统提供了行业标准的应用程序编程接口(API)。API是由应用程序代码以编程方式调用以执行网络功能的函数和命令集。例如,连接到网站的Web浏览器应用程序需要访问TCP的连接建立服务。
下图显示了两个常见的TCP/IPAPI,Windows套接字和NetBIOS,以及它们与核心协议的关系。
用于TCP/IP的API
windows套接字接口
WindowsSocketsAPI是WindowsServer2003下的标准API,用于使用TCP和UDP的应用程序。写入WindowsSocketsAPI的应用程序在许多版本的TCP/IP上运行。TCP/IP实用程序和SNMP服务是写入Windows套接字接口的应用程序示例。
Windows套接字提供的服务允许应用程序绑定到主机上的特定端口和IP地址、启动和接受连接、发送和接收数据以及关闭连接。有两种类型的套接字:
流套接字使用TCP提供双向、可靠、有序且不重复的数据流。
数据报套接字使用UDP提供单向或双向数据流。
套接字由主机上的协议和地址定义。地址的格式特定于每个协议。在TCP/IP中,地址是IP地址和端口的组合。两个套接字(连接两端各一个)形成双向通信路径。
为了进行通信,应用程序指定协议、目标主机的IP地址和目标应用程序的端口。连接应用程序后,可以发送和接收信息。
网络简介接口
NetBIOS允许应用程序通过网络进行通信。NetBIOS定义了两个实体:会话级接口和会话管理和数据传输协议。
NetBIOS接口是用户应用程序向底层网络协议软件提交网络输入/输出(I/O)和控制指令的标准API。使用NetBIOS接口API进行网络通信的应用程序可以在支持NetBIOS接口的任何协议软件上运行。
NetBIOS还定义了一个在会话/传输级别运行的协议。这是由底层协议软件(如NetBIOSFramesProtocolNBFP——NetBEUI或NetBIOSoverTCP/IP(NetBT)的一个组件)实现的,该软件执行适应NetBIOS接口命令集所需的网络I/O。基于TCP/IP的NetBIOS在RFC1001和1002中定义。默认情况下启用NetBT,但WindowsServer2003允许您为不包含基于NetBIOS的网络客户端或应用程序的环境禁用NetBT。
NetBIOS为NetBIOS名称管理、NetBIOS数据报和NetBIOS会话提供命令和支持。
网络BIOS名称管理
NetBIOS名称管理服务提供以下功能:
名称注册和发布。当TCP/IP主机初始化时,它通过将NetBIOS名称注册请求广播或定向到NetBIOS名称服务器(如WINS服务器)来注册其NetBIOS名称。如果另一台主机注册了相同的NetBIOS名称,则该主机或NetBIOS名称服务器将以否定名称注册响应进行响应。因此,启动主机会收到初始化错误。当主机上的工作站服务停止时,当其他人尝试使用该名称时,主机将停止广播负名称注册响应,并将名称释放发送到NetBIOS名称服务器。据说NetBIOS名称已发布并可供另一台主机使用。
名称解析。当一个NetBIOS应用程序想要与另一个NetBIOS应用程序通信时,必须解析NetBIOS应用程序的IP地址。NetBT通过在本地网络上广播NetBIOS名称查询或将NetBIOS名称查询发送到NetBIOS名称服务器来执行此功能。
NetBIOS名称服务使用UDP端口137。
NetBIOS数据报服务提供无连接、无序和不可靠的数据报。数据报可以定向到特定的NetBIOS名称或广播到一组名称。传递是不可靠的,因为只有登录到网络的用户才能收到消息。数据报服务可以启动和接收广播消息和定向消息。NetBIOS数据报服务使用UDP端口138。
NetBIOS会话服务提供面向连接、按顺序排列且可靠的NetBIOS消息的传递。NetBIOS会话使用TCP连接并提供会话建立、保持连接和终止。NetBIOS会话服务允许使用TCP端口139在两个方向上并发数据传输。
对于IP版本4,每个TCP/IP主机都由一个逻辑IP地址标识。IP地址是网络层地址,不依赖于数据链路层地址(例如网络适配器的MAC地址)。使用TCP/IP进行通信的每个主机和网络组件都需要唯一的IP地址,可以手动分配,也可以使用动态主机配置协议(DHCP)进行分配。
IP地址标识系统上的系统位置,就像街道地址标识城市街区上的房屋一样。正如街道地址必须标识唯一的住所一样,IP地址对于互联网络必须是全局唯一的,并且具有统一的格式。
每个IP地址都包含一个网络ID和一个主机ID。
网络ID(也称为网络地址)标识位于由IP路由器绑定的同一物理网络上的系统。同一物理网络上的所有系统必须具有相同的网络ID。网络ID对于互联网络必须是唯一的。

IP地址由32位组成。标准做法是将IPv4地址的32位划分为四个称为八位字节的2位字段,而不是使用二进制表示法(Base32)一次表示4位。每个八位字节都转换为8–10之间的十进制数(以0为基数),并用句点(点)分隔。这种格式称为点分十进制表示法。下表提供了二进制和点分十进制格式的IP地址示例。
二进制和点分十进制格式的IP地址
例如,4的IPv11000000101010000000001100011000地址为:
分为8位块:11000000101010000000001100011000。
每个块转换为十进制:192168324
相邻的八位字节由句点分隔:192.168.3.24。
表示法w.x.y.z?用于指代通用IP地址,如下图所示。
互联网标准定义了以下类型的IPv4地址:
单播。分配给位于网络上特定子网上的单个网络接口,用于一对一通信。
多播。分配给位于网络上各个子网上的一个或多个网络接口,用于一对多通信。
广播。分配给位于网络上子网上的所有网络接口,用于子网上的每个人之间的通信。
以下各节详细介绍了这些类型的地址。
IPv4单播地址标识接口在网络上的位置,其方式与街道地址标识城市街区上的房屋的方式相同。正如街道地址必须标识唯一的住宅一样,IPv4单播地址对于网络必须是全局唯一的,并且具有统一的格式。
每个IPv4单播地址都包含一个网络ID和一个主机ID。
网络ID(也称为网络地址)是IPv4单播地址的固定部分,用于标识位于与IPv4路由器边界相同的物理或逻辑网段上的接口集。TCP/IP网络上的网段也称为子网。同一物理或逻辑子网上的所有系统必须使用相同的网络ID,并且该网络ID对于整个TCP/IP网络必须是唯一的。
主机ID(也称为主机地址)是IPv4单播地址的可变部分,用于标识子网上网络节点的接口。主机ID对于网络ID必须是唯一的。
如果网络ID对于TCP/IP网络是唯一的,并且主机ID对于网络ID是唯一的,则由网络ID和主机ID组成的整个IPv4单播地址对于整个TCP/IP网络都是唯一的。
IPv4组播地址
IPv4组播地址用于单数据包一对多传送。在启用了IPv4组播的Intranet上,寻址到IPv4组播地址的IPv4数据包由路由器转发到有主机侦听发送到IPv4组播地址的流量的子网。IPv4组播为多种类型的通信提供高效的一对多传送服务。
IPv4组播地址由D类因特网地址类定义:224.0.0.0/4。IPv4组播地址的范围从224.0.0.0到239.255.255.255。4.224.0.0/0地址前缀(24.224.0.0到0.224.0.0)的IPv255组播地址保留用于本地子网组播流量。
IPv4广播地址
IPv4使用一组广播地址在子网传送服务上提供一对所有人。发送到IPv4广播地址的数据包由子网上的所有接口处理。以下是不同类型的IPv4广播地址:
网络广播。通过将类地址前缀的所有主机位设置为1而形成。类网络ID131.107.0.0/16的网络广播地址示例为131.107.255.255。网络广播用于将数据包发送到有类网络的所有接口。IPv4路由器不转发网络广播数据包。
子网广播。通过将无类别地址前缀的所有主机位设置为1而形成。无类别网络ID131.107.26.0/24的网络广播地址示例为131.107.26.255。子网广播用于将数据包发送到无类别网络的所有主机。IPv4路由器不转发子网广播数据包。对于类地址前缀,没有子网广播地址,只有网络广播地址。对于无类别地址前缀,没有网络广播地址,只有子网广播地址。
全子网定向广播。通过将所有原始有类网络ID主机位设置为1作为无类别地址前缀而形成。将寻址到全子网定向广播的数据包定义为到达基于子网类的网络ID的所有子网上的所有主机。子网网络ID131.107.26.0/24的全子网定向广播地址示例是131.107.255.255。全子网定向广播是原始有类网络ID的网络广播地址。IPv4路由器可以转发所有子网定向广播数据包,但是RFC1812中不推荐使用全子网定向广播地址。
有限播出。通过将IPv32地址的所有4位设置为1(255.255.255.255)而形成。当本地网络ID未知时,受限广播地址用于本地子网上的一对一传送。IPv4节点通常仅在自动配置过程(如引导协议(BOOTP)或DHCP)期间使用有限的广播地址。例如,对于DHCP,DHCP客户端必须对发送的所有流量使用有限的广播地址,直到DHCP服务器确认使用了提供的IPv4地址配置。IPv4路由器不转发有限的广播数据包。
互联网社区最初定义了地址类,以适应不同类型的地址和不同大小的网络。地址类定义哪些位用于网络ID,哪些位用于主机ID。它还定义了可能的网络数和每个网络的主机数。在五个地址类别中,为IPv4单播地址定义了A、B和C类地址。D类地址定义为IPv4组播地址,E类地址定义为实验用途。
A类网络ID分配给具有大量主机的网络。A类地址中的高阶位始终设置为零,这使得所有A类网络和地址的地址前缀为0.0.0.0/1(或0.0.0.0、128.0.0.0)。接下来的七位(完成第一个八位字节)用于枚举A类网络ID。因此,A类网络ID的地址前缀具有8位前缀长度(/8或255.0.0.0)。其余24位(最后三个八位字节)用于主机ID。地址前缀0.0.0.0/0(或0.0.0.0、0.0.0.0)是保留的网络ID,127.0.0.0/8(或127.0.0.0、255.0.0.0)是为环回地址保留的。在总共128个可能的A类网络中,有126个网络,每个网络有16,777,214个主机。
枚举给定网络ID的主机ID时,将保留主机ID中的所有位设置为0(全零主机ID)和主机ID中的所有位设置为1(全主机ID)的两个主机ID,不能分配给网络节点接口。因此,在上述计算中,A类主机ID有24位,可能的主机ID总数为16,777,216(224)。减去两个预留主机ID时,可用主机ID总数为16,777,214。
下图说明了A类地址的结构。
B类网络ID分配给大中型网络。B类地址中的两个高阶位始终设置为10,这使得所有B类网络和地址的地址前缀为128.0.0.0/2(或128.0.0.0、192.0.0.0)。接下来的14位(完成前两个八位组)用于枚举B类网络ID。因此,B类网络ID的地址前缀具有16位前缀长度(/16或255.255.0.0)。其余16位(最后两个八位字节)用于主机ID。使用14位表示B类网络ID,16位表示主机ID,这允许16,384个网络和每个网络65,534个主机。
下图说明了B类地址的结构。
本文来源:国外服务器--TCP/IP二(tcpip二层协议)
本文地址:https://www.idcbaba.com/guowai/5336.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



