TCPIP协议的历史和发展过程
TCP/IP协议的体系结构模型
2.1 IP⽹际层的功能
2.2 IP地址及其转换
2.2.1 IP地址
2.2.2 IP地址的转换
2.2.3 ⼦⽹技术
2.3 IP数据报的格式
2.4 Internet控制报⽂协议ICMP
3.1 TCP运输层协议概述
tcpip协议pdf3.2 端⼝及套接字
3.3 TCP报⽂的格式
3.4 差错控制与流量控制
3.5 TCP连接管理
3.6 ⽤户数据报协议UDP
4.1 应⽤层的概述
4.2 应⽤层协议简介
4.2.1 ⽂件传送协议FTP,TFTP
4.2.2 简单邮件传输协议SMTP
4.2.3 远程登录TELNET
论TCP/IP协议的体系的结构及其各层协议
(易家傅 99714001 卢凌凌 99714004)
摘要: 本⽂主要论述了TCP/IP协议体系结构及各层协议.重点说明IP⽹际协议的数据报格式,IP地址及地址转换,TCP传输控制协议的数据报格式,差错控制,流量控制和连接的建⽴等原理.最后还简介了应⽤层的⼏个常⽤协议.
关键字:TCP/IP IP地址 ⼦⽹掩码 端⼝ 套接字
引⾔:
当前的世界经济正在从⼯业经济向知识经济转变,这种以知识基础的经济有两个重要的特点,就是信息化和全球化.⽽要实现信息化和全球化,就必须依靠完善的⽹络.计算机⽹络是其中最重要的⼀部分,然⽽计算机⽹络远⽐电信⽹络复杂,它不仅仅是计算机之间简单的连接,还是相互通信的计算机系统之间的⾼度协调⼯作,因此必须将这庞⼤⽽复杂的问题分层处理,转化成若⼲个局部问题,从⽽形成了像建筑框架那样的⽹络体系结构.由于Internet已得到全世界的承认,因此Internet所使⽤的TCP/IP体系计算机⽹络中占有真重要的地位,了解其内容和⼯作原理对学习计算机⽹络是很有帮助的.
1.1 TCP/IP协议的历史和发展过程
TCP协议最早由斯坦福⼤学的两名研究⼈员于1973年提出.1983年,TCP/IP被Unix 4.2BSD系统采⽤.随着Unix的成功,TCP/IP逐步成为Unix机器的标准⽹络协议.Internet的前⾝ARPANET最初使⽤NCP(Network Control Protocol)协议,由于TCP/IP协议具有跨平台特
性,ARPANET的实验⼈员在经过对TCP/IP的改进以后,规定连⼊ARPANET的计算机都必须采⽤TCP/IP协议.随着ARPANET逐渐发展成为Internet,TCP/IP协议就成为Internet的标准连接协议.
1.2 TCP/IP协议的体系结构模型
TCP/IP协议其实是⼀个协议集合,它包括了TCP协议(Transport Control Protocol,传输控制协议),IP协议(Internet Protocol Internet协议)及其它⼀些协议.如图1,TCP/IP体系结构模型⾃下往上分别是:
(1)⽹络接⼝层:严格来说它不是⼀个层次,⽽仅仅是⼀个接⼝,⽤以提供在下⾯的数据链路层和物理层的接⼝.⽹络接⼝层并没有什么具体的内容,这⾥就不再讨论了. 图1
(2)IP⽹络层:主要有⽹际协议IP,地址解析协议ARP,逆地址解析协议RARP.
(3)TCP运输层:有运输控制协议TCP,⽤户数据报协议UDP.
(4)应⽤层:有TELNET,FTP,SMTP等应⽤层协议.
层与层之间的关系是,下层总是为上⼀层服务的,上层屏蔽下⼀层的服务细节.
2.1 IP⽹际层的功能
不同的物理⽹络技术有不同的编址⽅式;不同物理⽹络中的主机,有不同的物理⽹络地址.⽹间⽹技术是将不同物理⽹络技术统⼀起来的⾼层软件术.⽹间⽹技术采⽤⼀种全局通⽤的地址格式,为全⽹的每⼀⽹络和每⼀主机都分配⼀个⽹间⽹地址,以此屏蔽物理⽹络地址的差异.IP协议提供⼀种全⽹间⽹通⽤的地址格式,并在统⼀管理下进⾏地址分配,保证⼀个地址对应⼀台⽹间⽹主机(包括⽹关),这样物理地址的差异被IP层所屏蔽.IP提供的是⽆连接服务.
2.2 IP地址及其转换
2.2.1 IP地址
每个Internet上的主机和路由器都有⼀个IP地址,包括⽹络号和主机号,其中⽹络号标识该⽹络,⽽主机号标识该⽹络中的主机.所有的IP地址都是32位,分成4个字段,每个字段8位.
32位的IP地址可以有五种格式,如图2所⽰:
IP地址通常⽤带点⼗进制记法来书写,即IP地址写成四个⼗进制数,相互之间⽤⼩数点隔开,每个⼗进制数(从0到255)表⽰IP地址的⼀个字节.
值得指出的是0和1有特殊的意义,见表格1:
Net-id
Host-id
源地址使⽤
⽬的地址使⽤
代表的意思
可以
不可
在本⽹络上的主机
Host-id
可以
不可
在⽹络上的某个主机
全1
全1
不可
可以
只在本⽹络上进⾏⼴播
Net-id
全1
不可
可以
对net-id上的所以主机进⾏⼴播
127
任何数
可以
可以
⽤作本地软件回送测试之⽤
表格1
2.2.2 IP地址的转换
IP地址是⽹络层的地址,⽽下传到链路层要转变为MAC帧后才能发送到⽹络.⽽MAC帧使⽤的是硬件地址.如何将32位的IP地址转变成48位的局域⽹ 地址,这就是地址解析协议ARP要解决的问题.
假设是在本局域⽹中,A主机向B主机发⽣数据报.⾸先A主机查看ARP⾼速缓存内的IP地址到物理地址的映射表,如果到就写⼊MAC帧发送,否则进⾏以下步骤:
在本局域⽹上⼴播发送⼀个ARP请求分组,上⾯有主机B的IP地址;
在本局域⽹上的所以主机上运⾏的ARP进程都收到此ARP请求分组;
主机B在ARP请求分组中见到⾃⼰的IP地址,就向主机A发送⼀个ARP响应分组,上⾯写⼊⾃⼰的物理地址;
主机A收到主B的ARP响应分组后,就在其ARP⾼速缓存中写⼊主机B的IP地址到物理地址的映射.
有时还要⽤到逆地址解析协议RARP使只知道⾃⼰物理地址的主机能够知道其IP地址,如⽆盘⼯作站的引导就可以通过逆地址解析协议RARP 来解决.
2.2.3 ⼦⽹技术
我们知道⼀个单位分配到的IP地址是IP地址中⽹络号net-id,⽽后⾯的主机号host-id则由本单位进⾏分配.若该单位的所有主机都使⽤同⼀个⽹络号,主机的数量很多,分布在很⼤的地理范围时,往往需要⼀些⽹桥将这些主机互连起来.⽹桥的缺点较多,例如,容易引起⼴播风暴,同时当⽹络出现故障时也不太容易隔离和管理.为了让本单位的主机便于管理,可以将本单位所属主机划分为若⼲个⼦⽹,⽤IP 地址中的主机号字段中的前若⼲个⽐特作为"⼦⽹号字段",后⾯剩下来的仍为主机号字段.这样便可以⽤路由器把本单位的各⼦⽹互连起来,使全单位的⽹络便于管理.从外部看,这个单位只有⼀个⽹络号.只有当外⾯的分组进⼊到本单位范围后,再由该单位的路由器根据⼦⽹号进⾏选路,最后到⽬的主机.这样⼀来该单位的⽹络管理就很⽅便得多了.同时IP地址的使⽤不⾄于造成很⼤的浪费,缓解了⽇益增加的局域⽹和⽹上主机对IP地址的需求.
如图3所⽰,说明了⼦⽹掩码的意义.每⼀个路由器当收到⼀个分组时,⾸先检查该分组的IP地址中的⽹络号,若不是本⽹络号则发送到下⼀站路由器,若是本⽹络号则⽤⼦⽹掩码与IP地址按位相与运算,然后取出⼦⽹号进⾏判断,决定是发送到其他⼦⽹,或直接交付给本⽹络的主机端⼝. 2.3 IP数据报的格式
IP数据报的格式能够说明IP协议都具有什么样的功能,图4就是数据报的格式.
从图4中可以看出,⼀个数据报⾸部由和数据两部分组成.⾸部的前20字节是固定部分,后⼀部分则是可变部分.
数据报⾸部的固定部分中的各字段
.版本 占4bit,指 的版本.通信双⽅使⽤的 协议的版本必须⼀致.
.⾸部长度
占4bit,可表⽰的最⼤数值是15个单位(每个单位为4字节),因此IP的⾸部长度的最⼤值是60 字节.当IP分组的⾸部长度不是4字节的整数倍的时开始,这样在实现起来会⽐较⽅便.⾸部长度的限制为60 个字节的缺点是有时(如采⽤源站选路的时)不够⽤.但这样的⽤意是要⽤户尽量减少额外开销.
.服务类型
占8bit⽤来获得更好的服务,其意义见图⼀的上⾯部分所⽰.服务类型字段的前三个⽐特表⽰优先级,它可使数据报具有8个有限级中的⼀个.
第四个⽐特是D⽐特,表⽰要求有更低的时延.
第五个⽐特是T⽐特,表⽰要求有更⾼的吞吐量.
第六个⽐特是R⽐特,表⽰要求有更⾼的可靠性,即在数据报传送的过程中,被节点交换机丢弃的概率⽐较更⼩⼀些.
第七个⽐特是C⽐特,是新增加的,表⽰要求选择费⽤更低廉的路由.
最后⼀个字节⽬前尚未使⽤.
.总长度
总长度指⾸部和数据之和的长度,单位为字节.
总长度字段为16bit,因此数据报的最⼤长度为65535字节.这在⽬前是够⽤的.
当很长的数据报要分⽚记性传送时,"总长度"不是指 数据报长度,⽽是指分⽚后的⾸部长度和数据长度的
总和.
.标识
标识字段是为了使分⽚后的各数据报最后能准确地重装成为原来的数据报.请注意:这⾥的"标识"并没有顺序号的意思,因为IP是⽆连接服务,数据报不存在按序接受的问题.
.标志
占3bit .⽬前只有前两个⽐特有意义.
标志字段中的最低位记为MF(More Fragment).MF=1即表⽰后⾯还有分⽚的数据报.MF=0表⽰这已是若⼲数据报⽚中的最后⼀个.
标志字段中间的⼀位记为DF (Don't Fragment).只有当MF=0时才允许分⽚.
.⽚偏移
⽚偏移指出:较长的分组在分⽚后,某个⽚在原分组中的相对位置.也就是说,相对于⽤户数据字段的起点,该⽚从何处开始.⽚偏移以8个字节为偏移单位.
.
寿命
寿命字段记为TTL(Time To Live), 其单位为秒,建议寿命值为32秒.
.协议
占8bit,协议字段指出此数据报携带的运输层的数据是使⽤何种协议以便⽬的主机的IP层知道应将此数据报上交给哪个进程.常⽤的协议和相应的协议字段值是:UDP(17),TCP(6),ICMP(1),GGP(3).
.⾸部检验和
此字段只检验数据报的⾸部不包括数据部分.IP检验和的计算⽅法是:将 数据报⾸部看成为16bit字的序列.先将检验和字段置零,将所有的
16bit字相加后,将和的⼆进制反码写进检验和字段.收到数据报后,将⾸部的16bit字的序列再相加⼀次,若⾸部未发⽣任何变化,则和必全为1,否则即认为出错,并将数据报丢弃.
IP数据报⾸部的可变部分主要⽤来进⾏⽹络测试或调试,可选项是变长的,定义了5种选项:即安全性,严格路由选择,宽松路由选择,路由记录,时间标记.
2.4 Internet控制报⽂协议ICMP
ICMP主要由⽹际⽹中的主机和路由器使⽤,⽤来交换⽀持数据报传输的信息.通常ICMP路由问题⽽引起的差错报告,但是同ICMP⼀起使⽤的有⼗⼀种不同类型的报⽂.主要分成为两种类型,即ICMP差错报⽂和ICMP询问报⽂.
在ICMP差错报⽂中,改变路由报⽂使⽤的最多,它⽤于更新主机的路由表.ICMP源站抑制报⽂⽤于控制⽹络拥塞,解决速率较⾼的源主机向速率较低的⽬的主机发送数据报时的匹配问题.
询问报⽂主要有:
Echo请求报⽂:⽤于测试⽬的站是否可达到,及其有关状态.
时间戳请求报⽂:可⽤来进⾏时钟同步和测量时间.
地址掩码请求报⽂:可使主机向⼦⽹掩码服务器得到某个接⼝的地址掩码
3.1 TCP运输层协议概述
从通信和信息处理的⾓度看,运输层属于⾯向通信部分的最⾼层.但从⽹络功能或⽤户功能来划分,则运输层⼜属于⽤户功能中的最低层.运输层向⾼层⽤户屏蔽了下⾯通信⼦⽹的细节,使⽤户看不到实现通信功能的物理链路是什么,看不见数据链路采⽤的是什么协议.TCP协议提供的是⾯向连接服务,是在不可靠的⽹络服务上提供端到端的可靠字节流.
3.2 端⼝及套接字
端⼝是应⽤层与运输实体进⾏交互的接⼝.端⼝号是⼀个16bit的地址,不同的应⽤进程⽤ 不同的端⼝号来标识.端⼝号分为两类,⼀类是专门分配给⼀些最常⽤的应⽤程序,这叫熟知端⼝(well—known port),数值为0-1023.
"熟知"就表⽰这些端⼝号是TCP/IP体系确定并公布的;另外⼀类则是⼀般的端⼝号,⽤来随时分配给请求通信的客户进程.
套接字即是IP地址与端⼝号的组合,TCP的⼀个连接就是以⼀对套接字来标识的,所以在运输层通信的⼀对套接字必须是唯⼀的.
3.3 TCP报⽂的格式
下图是TCP报⽂格式图:
.源端⼝和⽬的端⼝
各占两个字节.端⼝是运输层与⾼层的服务接⼝,16bit 的端⼝, 32bit的IP地址,构成了相当于运输层服务访问点TSAP的地址(总共是48bit). .序列号
占四个字节,是本报⽂段所发送的数据部分第⼀个字节的序号.在 TCP传送的数据流中每⼀个字节都有⼀个序号.
.确认序号
占四个字节,是期望收到对⽅下次发送的数据的第⼀个字节的序号,也就是期望收到的下⼀个报⽂段的⾸部中的序号.由于序号字段有32bit长,可对4GB的数据进⾏编号,这样就可以保证序号重复使⽤时就序号的数据早已在⽹络中消失了.
.数据偏移量
占4bit,这是TCP报⽂段⾸部的长度,⽤于指出数据开始的地⽅离TCP报⽂段的起始处有多远."数据偏移"的单位是32bit字,
.保留位 6bit,这些位必须是0;
.控制位
占6bit,各⽐特意义如下:紧急⽐特URG,当URG=1时,表明此报⽂段应尽快发送⽽不要按原来的排队来传送,应与紧急指针字段配合使⽤;确认⽐特ACK,当ACK=1时确认序号字段才有意义;急迫⽐
特PSH,当PSH=1时,表明请求远地TCP将本报⽂段⽴即传送给其应⽤层,⽽不等到整个缓冲区满后再向上交付;重建⽐特RST,当RST=1时,表明出现严重错误,必须释放连接,然后重新建⽴运输连接;同步⽐特SYN,当SYN=1⽽ACK=0时,表明这是⼀个连接请求报⽂段,若对⽅同意建⽴连接,则应在发回的报⽂段中使SYN=1且ACK=1;终⽌⽐特FIN,当FIN=1时,表明发送的字节串已经发送完毕,并要求释放运输连接.
.窗⼝ 占两字节,是报⽂段发送⽅的接受窗⼝,单位为字节.
.检验和
占两字节,检验的范围包括⾸部和数据两部分,在计算检验和时,⾸先要在TCP报⽂段的前⾯加上⼀个12字节的伪⾸部,然后接收端在计算检验和时仍然要加上伪⾸部.
.选项
长度可变.TCP的规定⼀种选项即最长报⽂段MSS⽤于告诉对⽅的TCP:本地的缓冲区所能接收的报⽂段的最⼤长度.
.填充
不定长,填充的内容必须为0,它是为了保证包头的结合和数据的开始
处偏移量能够被32整除;
3.4 差错控制
TCP不是按传送的报⽂段来编号.TCP将所要传送的整个报⽂看成⼀个个字节组成的数据流,然后对每⼀个字节编⼀个序号.在连接建⽴时双⽅要商定初始序号.TCP就将每⼀次传送的报⽂段中的第⼀个数据字节的序号,放在TCP⾸部的序号字段中.TCP的确认是对收到的数据的最⾼序号表⽰确认.但返回的确认序号是以收到的数据的最⾼序号加1.也就是说确认序号表⽰希望下⼀次收到的第⼀个数据字节的序号.
若发送⽅在规定的设置时间内没有收到确认,⼜要将未被确认的报⽂段重新发送.接受⽅若收到有差错的报⽂段,则丢弃此报⽂段(不发送否认息).
若收到重复的报⽂段,也要将其丢弃,但要发送确认信息.若收到的报⽂段⽆差错,只是未按序号,那么应该如何处理 TCP对此未做明确规定,⽽是让TCP的实现者来⾃⾏确定.或者将不按序的报⽂段丢弃,或者先将其暂存于接收缓冲区内,待所缺序号的报⽂段收齐后再⼀起上交应⽤层.采⽤后⼀种策略对⽹络的性能会更好些.
3.5 TCP的流量控制
TCP采⽤可变发送窗⼝的⽅式进⾏流量控制.发送窗⼝是指当发送端在未收到确认时还能够继续发送报⽂段的个数.窗⼝⼤⼩的单位是字节.在TCP报⽂段⾸部的窗⼝字段写⼊的数值就是当前设定的接收窗⼝数值.
发送窗⼝在连接建⽴时由双⽅商定.在通信的过程中接收端可根据⾃⼰的资源情况,随时动态地调整⾃⼰的接收窗⼝,然后告诉对⽅,使对⽅的发送窗⼝和⾃⼰的接收窗⼝⼀致.
实现流量控制并⾮仅仅为了使接收端来得及接收.如果发送端发出的报⽂过多会使⽹络负荷过重.由此会引起报⽂段的时延增⼤,这将会使主机不能及时地收到确认,因此会重发更多的报⽂段,⽽这⼜会进⼀步加剧⽹络的拥塞.为了避免发⽣拥塞,主机应当降低发送速率.
3.5 TCP连接管理
运输连接的建⽴和释放是每⼀次⾯向连接通信中必不可少的过程,运输连接的管理就使运输连接的建⽴和释放都能正常的进⾏.
在连接建⽴的过程中要解决以下三个问题:
要使每⼀⽅都知道对⽅的存在;
要允许双⽅协商⼀些参数(如,最⼤报⽂段长度,最⼤窗⼝的⼤等);
能够运输实体资源(如缓冲区⼤⼩,连接表中的项⽬等)进⾏分配.
在数据连接建⽴的过程叫做三次握⼿:
主机A的TCP向主机B发送请求连接报⽂段,其⾸部中的同步⽐特SYN应置1,同时选择⼀个序号X,商定为起始序号;
主机B的TCP收到连接请求报⽂段后,如果同意则发回确认,在确认报⽂段中置1,确认序号为X+1,同时为⾃⼰选择⼀个序号Y.
主机A的TCP收到此报⽂段后还要向B给出确认,其确认序号为Y+1;
各主机的TCP通知上层应⽤进程连接已建⽴.
在数据传输结束后,通信的双⽅都可以发出释放连接的请求.与建⽴连接相类似,释放过程也是三次握⼿:
假设A先发出释放请求,则在发给B的TCP报⽂段⾸部的终⽌⽐特FIN1;
B收到请求后发出确认,此时A到B的连接就释放了,连接处于半关闭状态;
若B也发出释放请求,A收到后发出确认.这时反向连接也释放了.整个连接就全部释放了.
3.6 ⽤户数据报协议UDP
⽤户数据报协议UDP只在IP的数据报服务的基础上增加很少的⼀点功能,看图1,很形象的说明了UDP和TCP之间的差别.UDP的可靠服务必须
由应⽤层来完成.
UDP的⾸部字段很简单,只有8个字节,由四个字段组成,每个字段都是两个字节.分别为:源端⼝字段,⽬的端⼝字段,长度字段,检验和字段.
4.1 应⽤层的概述
应⽤层协议并不是解决⽤户各种具体运⽤的协议,解决具体应⽤问题的应该是应⽤进程,应⽤层则是规定应⽤进程在通信时所遵循的协议.
4.2 应⽤层协议简介
4.2.1 ⽂件传送协议FTP,TFTP
FTP是Internet上使⽤最⼴泛的⽂件传送协议,它屏蔽了各计算机系统的字节,因⽽适合于异构⽹络中任意计算机之间传送⽂件,它⽀持许多不同⽂件类型和⽂件组织形式.FTP是基于TCP的,它使⽤的端⼝号为21.
TFTP是FTP功能的⼀个⼦集,简化了FTP实现的复杂性,TFTP使⽤的是UDP数据报,因此TFTP要有⾃⼰的差错纠正措施.TFTP只⽀持⽂件传输,⽽不⽀持交互,因此没有庞⼤的命令集,其端⼝号为69.
4.2.2 简单邮件传输协议SMTP
SMTP就是在两个报⽂传送代理MTA之间的通信协议.SMTP规定了⼗四条命令和⼆⼗⼀种应答信息,由⼀个三位数字的代码开始,后⾯附上(也可不附上)很简单的⽂字说明.SMTP通信的三个主要阶段是:(1)连接建⽴;(2)邮件传送;(3)连接释放.
4.2.3 远程登录TELNET
TELNET是⼀个简单的终端协议.⽤户⽤TELNET就可以在其所在地通过TCP连接注册到远地的另⼀个主机上.TELNET能把⽤户的击键传到远地主机,同时也能把远地主机的输出通过TCP连接返回到⽤户屏幕.这种服务是透明的,因为⽤户感觉到好像键盘和显⽰器是直接连在远地主机上.
结束语:TCP协议与IP协议是TCP/IP体系结构中的关键,正是由于IP⽹际协议解决了异构⽹之间的连接
与寻址问题,TCP运输协议解决了端到端的可靠字节服务,使得Internet得到了⼴泛的应⽤.TCP/IP协议将不断地得到完善,IPV6将成为下⼀代的IP,其功能将更加强⼤.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。