TCP/IP协议概论
1.什么是TCP/IP协议
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议) 是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
TCP/IP协议的分层模型
TCP/IP协议一共可分为5层:
- 应用层:为网络应用提供服务接口,以简化应用的设计和实现。
- 传输层:提供网络应用程序间的通信服务。
- 网络层:为网络上任意主机之间的通信提供不可靠,无连接的服务。
- 数据链路层:为两个直连的节点提供通信链路,可使用现有的各种物理网络协议。
- 物理层:完成比特流的传输。
注:数据链路层和物理层也可合在一起称为网络接口层,原因是TCP/IP协议中不定制独立的数据链路层和物理层,而是使用现有的标准,但会定义IP如何在其上承载的协议。
为什么需要分层:分层的目的是解耦合(低耦合高内聚),每一层只提供相应的服务标准,而各层之间不存在具体内部细节实现的相关性。所以方便各层单独进行修改而不影响其他层的使用。
1.1应用层
TCP/IP应用层为用户提供了访问Internet的一组高层协议,即一组应用程序,如FTP、Telnet等。应用层的作用是对数据进行格式化,并完成应用所要求的服务。数据格式化的目的是为了便于传输与接收。
严格地说,应用程序并不是TCP/IP的一部分,只是由于TCP/IP对此制定了相应的协议标准,所以将它们作为TCP/IP的内容。
应用层协议:Telenet,Ftp,Smtp,DNS,TFTP,NFS,SNMP,HTTP
1.2运输层
运输层的作用是提供应用程序间的通信服务。为实现可靠传输,该层协议规定接收端必须向发送端发回确认;若有分组丢失,必须重新发送。该层提供了以下两个协议:
(1)传输控制协议TCP:负责提供高可靠的数据传送服务,主要用于一次传送大量报文,如文件等。
(2)用户数据协议UDP:负责提供高效率的服务,用于一次传送少量的报文,如数据查询等。
1.3网络层(IP层)
网络层的核心是IP协议,同时还提供多种其他协议。IP协议提供主机间的数据传送能力,其他协议为IP协议提供辅助功能,协助IP协议更好地完成数据报文传送。
IP层的主要功能:
- 处理来自运输层的分组发送请求。收到请求后,将分组装入IP数据报,填充报头,选择路由,然后将数据报发往适当的网络接口。
- 处理输入数据报。首先检查输入的合法性,然后进行路由选择。假如该数据报已经到达目的地(本机),则去掉报头,将剩余的部分交给适当的传输协议;假如该数据报未到达目的地,则转发该数据报。
- 处理差错与控制报文。路由处理,流量控制,拥塞控制等问题。
网络层提供的其他协议:
- 地址解析协议ARP:用于将Internet地址转换为物理地址
- 方向地址解析协议RARP:用于将物理地址转换为Internet地址
- 网间控制信息协议ICMP:用于报告差错和传送控制信息,其控制功能包括:差错控制,拥塞控制和路由控制等。
1.4网络接入层
网络接入层是TCP/IP协议软件的最低一层,主要功能是负责接收IP分组,并通过特定的网络进行传输,或者从网络上接收物理帧,抽出IP分组并上交给运输层。网络接入层又叫网络接口层,实际上该层又可分为数据链路层和物理层。
2.IP协议
IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。
2.1IP编址方式
IP协议提供的是在互联网中主机到主机间的通信服务,通信离不开目的地址和源地址,所以我们首先需要解决不同主机在互联网中的编址问题,这也是IP协议需要处理的一部分。主机在Internet网中的地址称为IP地址:
一个IP地址由4个8位字节数字串组成,这4个字节通常用小数点分隔。一个IP地址包括两部分的标识码,即网络ID和主机ID,同一个物理网络上的所有主机都用同一个网络ID,网络上的一个主机有一个主机ID与其对应。具体来讲,一个IP地址对应着唯一的一个网络接口,而一个主机可以有多个网络接口。
- 同一区域不同接口的IP地址网络号相同,主机号不同,相同网络号的IP地址构成IP子网
- IP子网内的接口不跨越网络层以上的设备(路由器)就可以物理连通
- 一个IP地址只能对应一台主机,而一台主机不一定对应唯一地址
最初的互联网采用简单的分类编址的机制,在这32位地址的信息内有五种定位的划分方式,这五种划分方式分别对应于A,B,C,D,E类IP地址。
- A类:一个A类IP地址由1个字节的网络地址和3个字节的主机地址组成,网络地址最高位必须是0
- B类:一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址最高位必须是10
- C类:一个C类IP地址由3个字节的网络地址和1个字节的主机地址组成,网络地址最高位必须是110
- D类:用于多点播送。第一个字节以1110开始
- E类:以11110开始,为研究和将来使用保留
特殊IP地址的划分和用途:
私有IP地址:
2.2IP子网的划分
为什么划分子网?
因为往往一个企业或者地域申请的IP子网可容纳的主机数远大于实际存在的主机数。
例如一个企业有上千台主机,而该企业申请了一个B类地址,同一网络号下的B类地址可容纳主机数为2的16次方台,这样一来就远远没有充分发挥B类地址容量大的优势,造成了大量的地址浪费。所以需要对同一网络号下的子网进行进一步的划分。
子网IP地址的划分方式:将原IP地址的网络号不变,从主机号中划分出一部分来作为子网号。
子网的划分形式可以根据不同的情形和需求进行划分,但是如何知道具体进行了怎样的划分,最重要的是如何从该划分后的IP地址中获取子网地址?
子网掩码就是为此而诞生的:
2.3子网掩码
子网掩码:子网掩码(subnetmask)又叫网络掩码、地址掩码、子网络遮罩,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码的形式与IP地址相似,同是由32位4字节二进制数组成的,字节间由小数点分隔
一个IP地址确定后,它的子网掩码也是唯一确定的,即子网掩码中对应IP地址中的网络号和子网号全部取1,主机号全部取0,例如一个B类IP子网,借用主机号的前3位划分为8个子网,那么我们可以推算出这个子网的子网掩码为 :
11111111 11111111 11100000 00000000 即 255.255.224.0
子网掩码的应用:(如何提取子网地址)
再举一个应用子网掩码求IP子网地址的例子:
已知目的IP地址为153.22.124.25,且该IP地址所属的子网借用主机号的前5个bit划分子网,求该IP地址的子网地址:
分析如下:
- 已知IP地址,根据IP地址网络号的范围可以推出它属于B类IP地址。即处于128.0.0.0到191.255.255.255之间
- 根据子网掩码的设置规则,网络号与子网号置1,主机号置0,而该IP子网中子网号为5个bit,且B类IP网络号为2字节,则子网掩码为:11111111 11111111 11111000 00000000,即255.255.248.0
- 根据子网掩码的用法,即将子网掩码与IP地址按位与即可获得子网地址: 子网掩码 11111111 11111111 11111000 00000000 (225.255.248.0) IP地址 10011001 00010110 01111100 00011001 (153.22.124.25) 子网地址 10011001 00010110 01111000 00000000 (153.22.120.0) 即最终求得子网地址为:153.22.120.0
2.4IP分组格式
解决了主机在因特网中的通信地址问题后,我们需要进一步关心如何将数据在因特网中顺利传输,使从源主机地址发送的数据可以顺利被目的主机地址接收。这就需要引出数据在Internet网中的传输形式—IP分组:
IP分组是网络层传输的基本数据单元,IP分组由分组头和数据区两部分组成。
分组头部分用来存放IP协议的具体控制信息
数据区包含了上层协议提交给IP协议的传送数据
IP分组头的构成字段:
- 版本号:长度为4bit,表示与IP分组对应的IP协议版本号。若版本号的值为4,则对应IPv4版本,若版本号为6,则对应IPv6版本。
- 分组头长度(首部长度):长度4bit,用于指明IP分组的分组头长度,单位是4字节,即分组头长度一定是4字节的整数倍。4bit的分组头长度可表示的分组头大小范围是0-480bit。每一个分组的分组头的固定部分都是20字节
- 服务类型(TOS):长度为8bit,用于指明IP分组所希望得到的有关优先级,可靠性,吞吐量,时延等方面的服务质量要求。
- 总长度:长度为16bit,用于指明整个IP数据报的长度,以1个字节为单位。可表示的数据最长范围是65535字节。利用分组头部长度和总长度字段,我们就可以知道IP分组中数据部分的起始位置和长度。当数据报被分片时,该字段的值也随之变化。
- 标识符:长度为16bit,和源地址,目的地址,用户协议一起唯一地标识主机发送的每一个分组。通常每发送一个分组它的值就会加1.。
- 标志位:长度为3bit,在3bit中第一位保留,另外两位DF和MF分别指明IP分组不分片和分片。
- 分片偏移量:长度为13bit,以8个字节为单位,用于指明当前分组片在原始分组中的位置。可表示的字节范围为0-65535字节,该字段用于重装时判断分组片之间的位置顺序。
- 生存时间TTL(Time-to-Live):长度为8bit,用于指明IP分组可在网络中传输的最长时间,TTL的初始值由源主机设置,一旦经过一个处理它的路由器,TTL的值就减小1。当该字段的值为0时,路由器将丢弃该分组,并发送ICMP消息通知源主机。该字段用于保证IP分组不会在网络出错时无休止地传输。
- 协议:长度为8bit,用于指明调用IP协议进行传输的高层协议。其中,1表示ICMP,6表示TCP,17表示UDP
- 分组头校验和:长度为16bit,用于保证分组头的完整性。算法为:该字段初始值为0,然后对IP分组头以每16bit为单位进行求异或,并将结果取反,便得到校验和。
- 源IP地址:长度为32bit,用于指明发送分组的源主机IP地址。
- 目的地址:长度为32bit,用于指明接收分组的目标主机IP地址。
- 任选项:长度可变,该字段允许在以后的版本中包括当前设计的分组头中未出现的信息
2.5IP的分片与重组
在互联网中各个网络定义的最大分组长度可能不同,因为网络链路存在最大传输单元MTU,也就是链路层数据帧可封装数据的上限不同。当较大的IP分组被转发向较小的MTU链路时,该分组不能直接通过,网络层需要将收到的数据报分割成较小的数据块,也就是分片。相反地,到了目的端将多个数据块组合起来,称为重组。
3.TCP协议
TCP协议又叫运输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。由于TCP协议实现了面向连接的可靠传输,所以相比UDP协议来讲,复杂度大大提升,在IP协议的基础上做出了较多的扩展。由于篇幅原因,这里只对此做简单介绍,关于TCP协议与UDP的详细内容会在之后的博客中另做介绍,请大家关注点赞(>_<)后面写好之后会在此添加超链接
文章参考了很多哈工大MOOC部分的内容以及现代通信网概论教材
版权归原作者 独行的喵 所有, 如有侵权,请联系我们删除。