1.ARPANET参考模型
IP是TCP/IP中最重要的网络层协议,它发送给链路层协议的PDU称为数据报,每个数据报的大小是64KB(后来被IPv6扩大为4GB),在很多情况下,通常使用“分组”来表示IP数据报。大的分组被放入链路层PDU(称为帧)时需要进行缩小处理,这个过程称之为分片,通常由ip主机和某些路由器在必要的时候执行。在分片过程中,大数据报的一部分会被放入多个小数据报(分片)中,在到达目的地后进行组合(又叫重组)。
由于每个IP分组都是一个数据报,所以都包含接收方和发送方的第三层地址,这些地址被称为IP地址,即32位IPv4地址和128位IPv6地址。每个数据报的目的地址决定发送该数据报的目的地址,做出数据报发送决定和把数据报发送到下一跳的过程称为转发。较为明显的例子就是路由器和主机,但更多的是由路由器实现转发。这里有三种类型的IP地址,分别是:单播(目的地是一台主机)、广播(目的地是某个指定网络中的所有主机)和组播(目的地是某个组播组中的一组主机)。
Internet Group Management Protocol(Internet组管理协议,简称为IGMP)是IPv4的一个辅助协议,它采用组播寻址和交付两种方式管理组播组中的主机。
在传输层中,常见的两种(TCP和UDP) Internet传输协议有很大的区别。TCP协议(传输控制协议)会处理数据包丢失、重复和重新排序的等IP层不处理的问题,它采用面向连接(VC)的方式,且不保留消息边界。与之相反的是,UDP(用户数据报协议)仅仅提供比IP协议稍多的功能,且UDP允许应用发送数据并保留消息边界,但它不强制实现速率控制和差错控制。
TCP在两台主机之间提供可靠的数据流传输,它发送到IP的PDU称为TCP段。另一方面,UDP可以为应用层提供一种更简单的服务,它允许把数据报从一台主机发送到另一台主机,但是不保证数据一定能够到达另一端,任何的可靠性都需要应用层提供。事实上,UDP所做的是提供一套端口号,用于复用、分解数据和校验数据的完整性。
除此之外,还有两种相对较新的传输层协议:数据报拥塞控制协议(DCCP)和流控制传输协议(SCTP)。DCCP是一种介于TCP和UDP之间的一种服务类型,它的特点是面向连接、不可靠的数据报交换,但是具有拥塞控制功能。可以控制发送方的发送速率,避免流量堵塞网络。SCTP适用于某些特殊系统的传输协议,它提供类似于TCP的可靠交付,但不要求严格保持数据的顺序。且还提供了一个消息抽象,允许多个数据流逻辑在同一个连接上传输。SCTP张家平up没回在IP网络上携带信令消息,类似于某些电话网络中的用途。
2.TCP/IP中的复用、分解和封装
以太网帧包含一个48位的目的地址(又称为链路层或介质访问控制地址,简称MAC)和一个16位的以太网类型字段,十六进制的0x0806和0x86DD分别表示ARP和IPv6,以太网类型字段用于选择处理它的网络层协议。
如果收到的帧包含一个IP数据报,以太网头部和尾部信息将被清除,并将剩余字节(包含帧的有效载荷)交给IP来处理。如果目的地址与自己的一个IP地址匹配,并且数据报头部(IP不检测有效载荷)没有错误,则检测8位的IPv4协议字段(在IPv6中称为下一个头部字段),以决定接下来交给哪个协作来处理。
如果网络层(IPv4和IPv6)认为传入的数据报有效,并且已经确定了正确的传输协议,则将数据报(必要时由分片重组而成)交给传输层处理。在传输层中,大部分协议(包含TCP和UDP)提供端口号将复用分解到适当的应用。
3.端口号
端口号是一个16位的非负整数,它的范围是0~65535。这些数字是抽象的,在物理上没有代表任何东西,相反,每个IP地址有65536个可用的端口号,每个传输协议都能够使用这些端口号。
标准的端口号由Internet号码分配机构(全称叫Internet Assigned Numbers Authority,简称为IANA)分配,这组数字被划分为特定的范围,包括熟知端口号(0到1023)、
注册端口号(1024到49151)和动态/私有端口号(49152到65535)。熟知端口号用于识别很多众所周知的服务,例如SSH(端口号22)、FTP(端口号20和21)、Telnet远程终端协议(端口号23)、(电子/简单)邮件传输协议(SMTP,端口号25)、DNS域名系统(端口号53)、超文本传输协议或web(HTTP和HTTPS,端口号80和443)、交互式邮件访问协议(IMAP和IMAPS,端口号143和993)、简单网络管理协议(SNMP,端口号161和162)、轻量级目录访问协议(LDAP,端口号389),以及其他几种服务。这些端口号是从NCP端口号派生而来,因此他们大多都是奇数。NCP也是一种网络控制协议,它是TCP之前的ARPANET的传输层协议。注册端口号是提供给具有特殊权限的客户机或服务器的端口号,但是IANA会维护一个因为特定用途而保留的注册表,开发新应用时应该避免使用这些端口号,除非你已经购买某些IANA分配的端口号。动态/私有端口号基本不受监管。在某些情况下,端口号的值无关紧要,这是因为他们只是短期被使用,这些端口号又被称为临时端口号。
4.名称、地址和DNS
在TCP/IP中,每台计算机(包括路由器)的每个链路层接口至少有一个IP地址。IP地址足够识别主机,但它不容易被人们记住(尤其是更长的IPv6地址)。DNS是一个分布式数据库,提供主机名和IP地址之间的映射。域名的建立是有层次的,通常以.com、.org、.gov等域名结尾。