tcp(传输控制协议)ip(网际协议)
1、协议的三要素:
(1)语法:就是数据的结构或格式,也就是数据呈现的顺序。就是怎么说。
(2)语义:语义就是指每一段比特流分别表示什么意思。一个特定的位模式怎样解释?同样一个地址,他指得的是下一步的路由?还是报文的终点!
(3)同步(时序):数据应当何时发送出去,以及数据能够以多快的速度发送。例如:如果发送端产生数据的速度是100(Mbps)但接受方,只能以1Mbps的速率处理数据,那么这样就会造成数据大流量的丢失。(注意:1Mbps与 1m/s 是有区别的,1m/s指的是1024KB/S 而1Mbps指的是1000/8KB/S也就是125KB/S, 记住K和k是没区别的 ,区别在于bps属于位每秒的单位,而m/s ,KB/S这两个属于字节每秒的单位,一字节等于8位,即1k=8b)
2、osi模型。
7、应用层 |
|
6、表示层 | 567,是用户支撑层:使得一些本来无 |
5、会话层 | 关的系统之间有了互操作性 |
4、传输层 | 连接上下,使底层发送的是高层可以接受的形式 |
3、网络层 | |
2、数据链路层 | 123,网络支撑层:把数据从一个设备 |
1、物理层 | 传送到另外一个设备 |
(1)层与层之间的通信
这些数据和网络信息之所以能够在发送设备中逐层向下传递,同时,在接收设备中又能逐层向上传递,是因为每队相邻的层之间有一个接口。每个接口都定义了这层必须向上层提供什么样的信息和服务。(层功能的具体实现是可以修改或替换的,而不需要对周围其它层进行改动)
从应用层开始,然后按照降序逐层下传,每一层都可以在数据单元上附加一个首部,在第2层(数据链路层)还要加上一个尾部,这样格式化的数据单元到达物理层时,就转换为电磁信号并沿着一条物理链路传输。
(2)osi模型中的各层
⑴物理层:协调通过物理媒体传送比特流时,所需要的各种功能。
●接口和媒体的物理特性:物理层定义了设备与传输媒体之间的接口特性。
●比特的表示:比特(0和1的序列)发送时比特必须经过编码变成信号-电或光。
●数据率 传输速率:即每秒发送的比特数,物理层定义了一个比特的持续时间。
●比特的同步:发送,接收设备不仅要使用同样的比特率,而且还要在比特级进行同步。
●线路配置:物理层要考虑到设备与媒体的连接。点对点(两个设备通过专用链路连接在一起),多点(若干个设备共享一条线路),配置。
●物理拓扑:定义设备如何连接成为一个网络。
●传输方式:单工:一个设备发送,另一个接收。半双工:两个设备都可以发送,接收,但是不能同时进行。全双工:两个设备都可以发送,接收,可以同时进行、
⑵数据链路层:把物理层转换为可靠的链路,它使物理层对网络层看起来好像是无差错的
●组帧:数据链路层把从网络层接收到的比特流划分成可以处理的数据单元,称之为帧。
●物理地址:如果这些帧要发送给本网络内的另一个系统,那么数据链路层就要在帧上附加一个首部,指明帧的发送方和接收方。如果这个帧要发送给本网络以外的一个系统,则接收方地址应当是连接本网络和下一个网络的连接设备的地址。
●流量控制:接收方吸收数据的速率小于发送方产生数据的速率,那么数据链路层就因该使用流量控制机制来预防接收方因为过负荷而无法工作。
●差错控制:数据链路层还增加了一些措施来检测并重传受损伤的帧,或者丢失的帧。
●接入控制:当两个或多个设备连接到同一条链路时,数据链路层就必须决定任意时刻该有那一个设备连接链路。
⑶网络层:负责把分组从原点交付到终点,这可能要跨越多个网络(链路),若果说,数据链路层监督的是同一个网络(链路)上两个系统之间的分组交互,那么网络层则要确保每个分组从原点出发并最终抵达目的地。
●逻辑编制:由数据链路层实现的物理编制处理的是本地寻址问题,若分组穿过了网络边界,网络层,就会给上层传来的分组附加一个首部,其中包括发送方和接收方的逻辑地址,以及其他一些信息。
●路由选择:多个独立网络,或链路互相连接组成互联网,这些设备(路由器,交换机)就要为数据分组选路或者交换以达到目的地。网络层功能之一。
⑷运输层:负责完整报文的进程到进程(运行的程序)的交付。网络层管理单个分组的交付,他并不考虑这些分组之间的关系。运输层,则负责整个报文原封不动的按序到达。
●服务点编址(端口地址):从原点到终点的交付,并不仅仅从某一个计算机交付到另一个计算机,同时,还是从计算机上的特定进程交付到另一台计算机上的特定进程。因此,运输层的首部必须包括一种成为服务店地址(端口地址)的地址,网络层将分组送递正确的计算机,而运输层则将完整的报文递交给计算机上的正确进程。
●分段与重装:一个报文被分解成若干个报文段,每个报文段应该有一个序号,在报文到达终点时,运输层利用这些信号把它们重装起来。
⑸会话层:用于建立,维持并同步正在通信的系统之间的交互。
●对话控制:它允许两个系统进行半双工(在某时刻单向通信),全双工(在某时刻双向通信)方式进行。
●同步:会话层允许进程在数据流中插入若干个节点(同步点)。
⑹表示层:只需要考虑两个系统所交换的信息的语法和语义。
●转化:在两个计算机上的进程(运行中的程序),交换的信息一般就是字符串,数据,等。在传送之前,已经被转换为比特流。由于不同的计算机使用了不同的编码系统,表示层就是在这些不同的编码方法之间提供互操作性。发送方的表示层把信息从与发送方相关的格式转化成为一种公共的格式,而接收方的表示层,就是把这种公共的格式转化成为与接收方相同的一种格式。
●加密:发送方把原始的信息转化成为一种格式,发送到网络上,解密就是把原来的过程反向过来,把加密信息恢复成原来的格式。
●压缩:数据压缩减少了比特流中的比特数,在传输多媒体文件时这就显得很重要。
⑺应用层:让用户能够接入网络,应用层给用户提供了接口,也提供多种服务支持,以及其他多种形式的分布式信息服务。
●网络虚拟终端:使用户能够登陆到远程主机上。用户的计算机先与这个终端交谈,然后这个终端在与远程主机进行交谈。
●文件传送,存取和管理:这个应用程序允许用户远程访问主机上的文件,将文件读取到本地计算机上来使用,以及在本机上管理和控制远程计算机上的文件。
●邮件服务:这个程序提供转发和存储电子邮件的基本功能。
●名录服务:这个程序提供分布式数据库源,以及对全球各种对象服务信息的存取。
3、tcp/ip协议族:
tcp/ip协议族的开发要比osi模型更早,因此tcp/ip协议族的分组结构无法准确的与osi模型一一对应。原始的tcp/ip协议族是建立在硬件基础上的四个软件,不过目前tcp/ip协议族,被认为是一个5层结构的模型:
应用层 | 应用层 |
运输层 | 运输层 |
网络层 | 网络层 |
网络接口层 | 数据链路层 |
硬件设备 | 物理层 |
原始的分层结构 本书中使用的分层结构
(1)osi与tcp/ip协议族的比较。
tcp/ip中并没有会话层和表示层这两层,在tcp/ip中认为,应用层是osi最高三层的合并,
应用层 | ||
表示层 | 应用层 | 几个应用协议 |
会话层 | ||
网络层 | 网络层 | 几个运输协议 |
传输层 | 传输层 | 网际协议和其他辅助协议 |
网络链路层 | 网络链路层 | 底层局域网和广域网 |
物理层 | 物理层 | 技术 |
采用这一方式的理由有两个:●tcp/ip有多个传输层协议,而会话层的一些功能已经在传输层已经包括,●应用层并不是一个软件,包含的程序有很多,如果特定的程序需要用到会话层,表示层中的某些功能,那么这些功能也可以包含在应用软件中进行开发。
tcp/ip是一种分层协议,它由多个模块构成,每个模块具有特定的功能,但是这些模块并不是必须互相依赖的。osi模型明确的规定了那一层因该具有哪些功能,而tcp/ip协议族的每一层则包含一些相对独立的协议,可以根据系统的需要把这些协议混合并重新搭配使用,术语”层次化“,指的是每一个上层协议都由一个或多个下层协议来支持。
(2)tcp/ip协议族的分层:
我们假设再一个小型的专用网络内部使用tcp/ip协议族。这种互联网是由若干个小型链路的网络组成的,一条链路,就是指允许一组计算机互相通信的一个网络。一条链路有可能是服务小范围区域的lan(局域网),也可能是服务大范围的区域的wan(广域网)。我们还要假设不同的链路通过路由器或者交换机的设备连接在一起,这些设备会为数据选路以到达他们最终的目的地。
1、物理层。
在物理层,tcp/ip并没有任何特殊的协议,它支持所有标准和专用的协议。在这一层,通信发生在两跳或者两个节点之间,可能是计算机也可能是路由器。通信以比特为单位,当两个节点建立连接时,就会有一个比特流在他们之间流动。但是对于物理层,来说,每个比特都将被独立对待。如下图,我们假设都知道了与对方通信最有效的路径是经过路由器R1,R3,R4,。至于如何,知道则是后面要说的内容了。(注意;如果一个节点与n个链路连接,那么他就需要n个物理层协议,每条链路需要一个,原因在于不同的链路可能使用不同的物理层协议。)
这些比特,在计算机a和b之间的路途是4个独立的短途路程组成的。a以链路1使用的协议格式向路由器r1发送比特。r1以链路3使用的协议格式来向r3发送这些比特,以此类推。路由器r1有三个物理层。(物理层之间通信的单位是比特)
除了传送比特之外,物理层的其他任务也与osi模型的物理层相对应,且主要取决于提供链路的底层技术。
2、数据链路层。
tcp/ip没有位数据链路层定义任何的协议,支持所有的标准和专用的协议。通信荏苒发生在两个节点之间,不过通信的单位是帧的分组。一个帧就是封装了来自网络层的数据的分组,并为其附加一个首部,有时还要为其附加一个尾部。首部中,除了一些在通信中用到的信息之外,最重要的是包含了这个帧的源地址和目的地址(指明正确的信息接收者(因为连接到该链路上的节点可能不止一个,而有了源地址才能实现某些协议所要求的对帧的响应或确认))。
在主机a和路由器r1之间的传送的帧有可能不同于r1到r3之间传送的帧。当路由器r1接收到一个帧时,就会将其交给数据链路层协议(帧被打开,数据被卸下,然后将这个数据交给数据链路层协议,从而新生成一个将要发送到路由器r3的新帧)这样做的原因是:链路1,3可能使用不同的协议,要求不同格式的帧。(注意:图中并没有帧的传送过程,物理上的传输只能发生在物理层。换言之,就是这两个节点之间的数据链路层的通信是逻辑上的并不是物理上的)(数据链路层的通信单位是帧)
3、网络层。
在网络层tcp/ip支持的是ip协议(网际协议),ip传输的是被称为数据包分组的东西,每个数据包独立传输,不同的数据包可以走不同的路由,并且在他们到达终端时,ip也不具有按原顺序组织的能力。
需要注意,网络层之间的通信不同于物理层,数据链路层,它是端到端的通信,而在另外两层是节点到节点的通信。路由器上的网络层可以查看分组中的源地址,和目的地址,以查找最佳路由,但是不允许更改分组中的内容。这个通信也是逻辑上的,虽然计算机a,b网络层都认为他们正在发送和接收数据包,但是真正的通信发生在物理层。(网络层的通信单位是数据包)
4、运输层。
运输层与网络层有个很大的差别,那就是网络中的所有节点都必须含有网络层,只有两端的计算机上才需要运输层。网络层负责独立的将数据包从a主机发送到b主机,而运输层则要负责将完整的数据包(报文段)从计算机a,交给计算机b。一个报文段可能包含了几个到几十个数据包。报文段被拆分成多个数据包,通过网络层来传输。因为网际协议会为每个数据包,制定不同的路由,所以这些数据包可能会失序到达,也有可能丢失。计算机b的运输层要等所有数据包都到达之后,进行重装,从而得到报文段。
同理,两个运输层会认为,他们之间正在用数据包通信,而事实上真正的通信发生在物理层。
传统上tcp/ip协议族,中有两个传输层协议:(1)UDP(用户数据报协议)(2)TCP(传输控制协议)近些年又出现了一种新的运输层协议,SCTP(流控制传输协议)
(运输层的通信单位是数据包,或者是报文段,取决与运输层使用的具体协议)
5、应用层。
应用层使用户能使用网络提供的服务,这一层定义了许多协议以提供诸如电子邮件,文件传送,以及访问全球互联网的服务。
4、编址:实施tcp/ip协议的互联网需要用刀四个级别的地址:物理地址,逻辑地址,端口地址,特定应用地址。每种地址都与tcp/ip体系结构中的某一层相关,
报文 | 应用层 | 特定应用地址 |
报文段 | 运输层 | 端口地址 |
数据段 | 网络层 | 逻辑地址 |
帧 | 数据链路层 | 物理地址 |
比特 | 物理层 |
5、物理地址:也成为链路地址,是由节点所在的局域网或广域网为该节点指定的地址。物理地址包含在数据链路层的所有帧中,物理地址是最低一级的地址,物理地址仅对链路(局域网或广域网)有效。这种地址的长度和格式随着网络的不同而变化。
例子:物理地址为10的节点向物理地址为87的节点发送了一个帧。这两个节点通过一条链路(局域网)相连接。在数据链路层,帧的首部包含了这两个物理(链路)地址,他们是此处唯一需要用到的地址。帧的尾部通常是用于差错检测的一些附加位。(注意在大多数数据链路层协议中,目的地址是放在源地址前面的)这个帧在局域网中传播,每个物理地址,不是目的地址不匹配的话都会丢弃这个帧。直到找到匹配的物理地址,然后被卸掉首部和尾部,进行解封,解封后的数据被交给上一层。
(注意:在大多数协议中,逻辑源地址是出现在逻辑目的地址之前的)(相反)网络层必须先找到吓一跳的物理地址才能向下传递这个分组。网络层咨询他的路由表,并找出吓一跳的物理地址才能向下传递这个分组。另外还有一个称为地址解析协议(arp)的协议,他会找出该逻辑地址相对应的路由器的物理地址。(注意:虽然物理地址逐跳而变,但逻辑地址从原点到终点都不变)
单播地址 | 单个的接收者 |
多播地址 | 一组接受者 |
广播地址 | 网络中所有的系统 |
端口地址:ip地址和物理地址对于将批量数据从原主机发送到目的主机来说是必不可少的,但到达目的主机并不是因特网数据通信的最终目标(是一个进程与另一个进程通信)。这样的话,这些进程也就需要地址了。在tcp/ip体系机构中,给每一个进程指派的标号成为端口地址。tcp/ip中的端口地址长度为16位。(一个16位的端口地址被表示为一个10进制数)
特定应用地址:有些应用程序具有专门为其量身定做的用户友好型地址。比如URL,用来找到全球万维网中的一份文档。(发送数据的计算机会将这些地址统统转换为相应的端口地址和逻辑地址)等等地址。