TCP/IP协议
https://www.cnblogs.com/thisway/p/5539283.html
好用的网站;
一、概况
TCP/IP协议(又名:网络通讯协议)即
传输控制协议/互联网协议
,是一个网络通信模型,这一模型是Internet
最基本的协议
,也是Internet
国际互联网络的基础
,
由网络层的IP协议
和
传输层的TCP协议
组成。
TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的,
能够在多个不同网络间实现信息传输的
协议簇
, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
TCP/IP传输协议对互联网中各部分进行通信的
标准和方法
进行了规定(其定义了电子设备
如何连入因特网
,以及数据如何在它们之间
传输的标准
)。
TCP
负责发现传输的问题,而
IP
是给因特网的每一台联网设备规定一个地址。
TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。
(
应用层
的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;
传输层
的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;
网络层
的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;
网络访问层,也叫网路接口层或
数据链路层
,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。)
二、内容简介
为了减少网络设计的复杂性,大多数网络都采用分层结构。对于不同的网络,层的数量、名字、内容和功能都不尽相同。在
相同的网络
中
(注:一台机器上的第N层与另一台机器上的第N层可利用第N层协议进行通信,协议基本上是双方关于如何进行通信所
达成的一致
。)
不同机器中包含的对应层的实体叫做
对等进程
(注:对等进程实际是整过过程传送的数据;对等进程不一定非是相同的程序,但其功能必须完全一致,且采用相同的协议 。组成不同计算机同等层的实体称为对等进程。)
【在对等进程利用协议进行通信时,实际上并不是直接将数据从一台机器的第N层传送到另一台机器的第N层,而是每一层都把数据连同该层的控制信息打包交给它的下一层,它的下一层把这些内容看做数据,再加上它这一层的控制信息一起交给更下一层,依此类推,直到最下层。最下层是物理介质(物理层),它进行实际的通信
【层层打包传送,最终到达物理层,再由物理层到达对应层,实现通信】
。】
相邻层之间有接口,接口定义
下层向上层
提供的原语操作和服务
(注:
进程控制原语
包括:进程的建立、进程的撤销、进程的等待和进程的唤醒;操作系统执行和监督进程控制操作,往往通过执行各种
原语操作
实现。计算机控制器的机器指令是微操作构成的,
原语是机器指令的延伸,是由若干条机器指令构成用以完成特定功能的一段程序
)。
相邻层之间要交换信息 ,
对等接口
必须有一致同意的规则。层和协议的集合被称为
网络体系结构
。
每一层中的活动元素
(每一层参与数据通信的元素,有硬件也有软件)
通常称为
实体
,实体既可以是软件实体,也可以是硬件实体。
第N层实体实现的服务被第N+1层所使用
。在这种情况下,第N层称为服务提供者,第N+1层称为服务用户。
服务是在服务接入点提供给上层使用的。服务可分为
面向连接的服务
(注:面向连接的服务(connection-oriented service)就是通信双方在通信时,要事先建立一条通信线路,其过程有建立连接、使用连接和释放连接三个过程;TCP协议就是一种面向连接服务的协议,电话系统是一个面向连接的模式。)
和
面向无连接的服务
(注:面向无连接是通信技术之一。是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输;IP、UDP协议就是一种无连接协议)
,它在形式上是由一组
原语
来描述的。这些原语可供访问该服务的用户及其他实体使用。
从字面意义上讲,有人可能会认为
TCP/IP
是指TCP和IP两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是
利用IP进行通信时所必须用到的协议群的统称
。具体来说,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP协议。他们与TCP或IP的关系紧密,是互联网必不可少的组成部分。
TCP/IP一词泛指这些协
议,因此,有时也称TCP/IP为
网际协议群
。
互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发制定的协议族。因此,
互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。
三、产生背景
在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。
但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以
和其他的计算机终端做自由的交流了。
TCP/IP协议可以在各种硬件和操作系统上实现互操作
。
四、名词定义
1.IP
(网络层协议)IP是整个TCP/IP协议族的核心,也是构成互联网的基础。IP位于TCP/IP模型的网络层(相当于OSI模型的网络层),它可以向传输层提供各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。
为了能适应异构网络,IP强调适应性、简洁性和可操作性,并在可靠性做了一定的牺牲。IP不保证分组的交付时限和可靠性,所传送分组有可能出现丢失、重复、延迟或乱序等问题。
IP层
(注:IP层是透明光分组(OTP)的应用层,涉及管理与控制的有关内容。IP层对应于最广泛的接入网和核心网标准,对IP、ATM、SDH和PDH等多种业务进行封装,并映射进OPS层。IP层处理的可以是固定长度的光分组,也可以是可变长度的光分组。IP层简化了底层(物理层和OPS层)的复杂性,为高层多业务接入提供统一的接口。)
接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层—TCP或UDP层
(低层到高层)
;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层
(高层到低层)
。
IP数据包是不可靠的,因为
IP并没有做任何事情来确认
数据包是否按顺序发送的或者有没有被破坏;IP数据包中含有发送它的主机的地址(
源地址
)和接收它的主机的地址(
目的地址
)。
高层的TCP和UDP服务在接收数据包时,通常
假设包中的源地址是有效的
。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作 IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的
IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点
。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
2.TCP
TCP(即传输控制协议):是一种面向连接的
传输层协议
,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)
适用情况:
1.适合于对传输质量要求较高,以及传输大量数据的通信;
2.在需要可靠数据传输的场合,通常使用TCP协议;
3.MSN/QQ等即时通讯软件的用户登录账户管理相关功能通常采用TCP协议;
TCP协议分成了两个不同的协议:
1.用来检测网络传输中差错的传输控制协议TCP (
可靠传输
) ;
2.专门负责对不同网络进行互联的互联网协议IP (
不可靠传输
)
TCP是**
面向连接
的通信协议,通过
三次握手
建立连接,通讯完成时要拆除连接,由于TCP是面向连接的,所以只能用于端到端的通讯。
TCP提供的是一种
可靠
的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性;TCP还采用一种称为“滑动窗口”的方式进行
流量控制**,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现
虚电路间的连接
。
TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传
。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。反之应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层、设备驱动程序和物理介质,最后到接收方。
面向连接的服务
(例如Telnet、FTP、rlogin、XWindows和SMTP)
需要高度的可靠性
,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
3.UDP
UDP(User Datagram Protocol)
用户数据报协议
,是
不可靠的无连接的协议
。UDP数据包括目的端口号和源端口号信息;在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输;可以实现广播发送。
UDP通讯时不需要接收方确认,属于
不可靠的传输
,可能会出现
丢包现象
,实际应用中要求程序员编程验证。
适用情况:
1.发送小尺寸数据(如对DNS服务器进行IP地址查询时);
2.在接收到数据,给出应答较困难的网络中使用UDP;(如:无线网络)
3.适合于广播/组播式通信中;
4.MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议;
5.流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输;
UDP与TCP位于同一层,但它
不管数据包的顺序、错误或重发
。因此,UDP
不被应用于那些使用虚电路的面向连接的服务
,UDP主要用于那些
面向查询—应答的服务
,例如NFS。相对于FTP或Telnet,这些服务需要交换的
信息量较小
。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。
欺骗UDP包比欺骗TCP包更容易,因为
UDP没有建立初始化连接(也可以称为没有握手)
(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
4.ICMP
ICMP与IP位于同一层,它被用来
传送IP的控制信息
。它主要是用来提供有关通向目的地址的路径信息(
提供路径信息
)。ICMP的**‘Redirect’信息
通知主机通向其他系统的更准确的路径,而
‘Unreachable’信息**则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。
**5.通讯端口
TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是
双工
的,可以用来进行
读写
。
两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的
如下四项进行确认:
源IP地址 :发送包的IP地址。
目的IP地址 : 接收包的IP地址。
源端口 :源系统上的连接的端口。
目的端口 : 目的系统上的连接的端口。
端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。
6.数据格式
数据帧
:帧头+IP数据包+帧尾(帧头包括源和目标主机MAC初步地址及类型,帧尾是校验字)
IP数据
包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)
TCP数据信息
:TCP头部+实际数据(TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)
**7.IP地址
在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为
主机
。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。
Internet的网络地址是指连入Internet网络的计算机的
地址编号
。所以,在Internet网络中,网络地址唯一地标识一台计算机。
我们都已经知道,Internet是由几千万台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(InternetProtocol的简写)地址,即
用Internet协议语言表示的地址
。
在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做
点数表示法
。
IP地址分为IPV4和IPV6
IPV4:采用32位的整数来表示
IPV6:采用了128位整数来表示
mobileIPV6: local IP(本地注册的IP),roam IP(漫游IP)
IPV4地址:(两种形式)
(点分形式: 192.168.7.246和 32位整数)
特殊IP地址:
局域网IP: 192.XXX.XXX.XXX 10.XXX.XXX.XXX
广播IP: xxx.xxx.xxx.255, 255.255.255.255(全网广播)
组播IP: 224.XXX.XXX.XXX~239.xxx.xxx.xxx (不以255结尾)
五、 OSI参考模型
OSI(Open System Interconnect),即
开放式系统互连
。 一般都叫OSI参考模型,是ISO组织在1985年研究的网络互连模型,为了使各层上的
协议国际标准化
而发展起来的。该体系结构标准定义了网络互连的七层框架(
物理层
、
数据链路层
、
网络层
、
传输层
、
会话层
、
表示层
和
应用层
),即OSI开放系统互连参考模型。
物理层(Physical Layer)
物理层是参考模型中的最底层,主要定义了系统的电气、机械、过程和功能标准。
(如:电压、物理数据速率、最大传输距离、物理联接器和其他的类似特性。)
物理层的
主要功能是利用传输介质为数据链路层提供物理联接,负责数据流的物理传输工作
。物理层传输的基本单位是比特流,即0和1,也就是最基本的电信号或光信号,是最基本的物理传输特征。
数据链路层(Data Link Layer)
(注:任务是加强物理层的功能,使其对网络层显示为一条无错的线路。)
数据链路层是
在通信实体间建立数据链路联接
,传输的基本单位为“帧”,并为网络层提供
差错控
制和
流量控制服务
。
数据链路层由
MAC
(介质访问控制子层)和
LLC
(逻辑链路控制子层)组成。
(介质访问控制子层的主要任务是规定如何在物理线路上传输帧。逻辑链路控制子层对在同一条网络链路上的设备之间的通信进行管理。)
数据链路控制子层
主要负责逻辑上识别不同协议类型,并对其进行封装。也就是说数据链路控制子层会接受网络协议数据、分组的数据报并且添加更多的控制信息,从而把这个分组传送到它的目标设备。
网络层(Network Layer)
网络层主要为数据在节点之间传输
创建逻辑链路
,通过路由选择算法
为分组选择最佳路径
,从而实现拥塞控制、网络互联等功能。
确定分组从源端到目的端的路由选择。路由可以选用网络中固定的静态路由表,也可以在每一次会话时决定,还可以根据当前的网络负载状况,灵活地为每一个分组分别决定。
**
传输层(Transport Layer)
**从会话层接收数据,并传输给网络层,同时确保到达目的端的各段信息正确无误,而且使会话层不受硬件变化的影响
(注:下层接收数据传到上层,确保信息无误,使上层会话层不收硬件变化的影响)。
(
工作过程
:通常,会话层每请求建立一个传输连接,传输层就会为其创建一个独立的网络连接。但如果传输连接需要一个较高的吞吐量,传输层也可以为其创建多个网络连接,让数据在这些网络连接上分流,以提高吞吐量。而另一方面,如果创建或维持一个独立的网络连接不合算,传输层也可将几个传输连接复用到同一个网络连接上,以降低费用。除了多路复用,传输层还需要解决跨网络连接的建立和拆除,并具有流量控制机制。)
会话层(Session Layer)
会话层的主要功能是负责维护
两个节点之间的传输联接
(确保点到点传输不中断,以及管理数据交换等功能。)会话层在应用进程中
建立、管理和终止会话
。会话层还可以通过对话控制来决定
使用何种通信方式
(全双工通信或半双工通信。)会话层通过自身协议对请求与应答进行协调。
允许不同机器上的用户之间建立会话关系,既可以进行类似传输层的普通数据传输,也可以被用于远程登录到分时系统或在两台机器间传递文件。
表示层(Presentation Layer)
用于完成一些特定的功能,这些功能由于经常被请求,因此人们希望有通用的解决办法,而不是由每个用户各自实现。
表示层为在应用过程之间传送的信息提供表示方法的服务。表示层以下各层主要完成的是从源端到目的端可靠地的数据传送,而
表示层更关心的是所传送数据的语法和语义
。表示层的
主要功能
是处理在两个通信系统中交换信息的表示方式
应用层(Application Layer)
包含了大量人们普遍需要的协议。不同的文件系统有不同的文件命名原则和不同的文本行表示方法等,不同的系统之间传输文件还有各种不兼容问题,这些都将由
应用层来处理
。此外,应用层还有虚拟终端、电子邮件和新闻组等各种通用和专用的功能。
应用层是OSI模型中的最高层,是直接面向用户的一层,用户的通信内容要由应用进程解决,这就要求
应用层采用不同的应用协议来解决不同类型的应用要求,并且保证这些不同类型的应用所采用的低层通信协议是一致的
。应用层中包含了若干独立的用户通用服务协议模块,为网络用户之间的通信提供专用的程序服务。需要注意的是应用层并不是应用程序,而是为应用程序提供服务
六、TCP/IP四层协议
TCP/IP参考模型
是首先由ARPANET所使用的网络体系结构。这个体系结构在它的两个主要协议出现以后被称为TCP/IP参考模型(TCP/IP Reference Model)。这一网络协议共分为四层:
网络访问层、互联网层、传输层和应用层
。
网络访问层(Network Access Layer)
(又叫链路层,网络接口和物理层:)(底层驱动添加,硬件产生和校验,与软件没关系;)
在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。链路层的主要工作就是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。
屏蔽硬件差异,为上层提供一个统一的接口;
互联网层(Internet Layer)
又叫(网络层)(实现端到端的传输 (A机器与B机器))
是整个体系结构的关键部分,其
功能是使主机可以把分组发往任何网络,并使分组独立地传向目标
。这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。互联网层使用因特网协议(IP,Internet Protocol)。TCP/IP参考模型的互联网层和OSI(七层)参考模型的网络层在功能上非常相似。
传输层(Tramsport Layer)
(比如手机传给PC(linux系统)机数据,数据应该交给那个任务去处理;)
TCP
: (Transfer Control protocol,传输控制协议) 提供面向连接的,一对一的可靠数据传输的协议(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)
UDP
: (user Datagram Protocol, 用户数据报协议) 提供不可靠,无连接的尽力传输协议
(是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输)
SCTP
: 是可靠传输,是TCP的增强版,它能实现多主机、多链路的通信
链路层(物理层)定义了主机的身份,即MAC地址,而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就从可以从一个主机发送到另一台主机。但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包。因此传输层引入了UDP协议来解决这个问题,为了给每个应用程序标识身份。
使源端和目的端机器上的
对等实体可以进行会话
。在这一层
定义了两个端到端的协议
:
传输控制协议(TCP
,Transmission Control Protocol)和
用户数据报协议(UDP
,User Datagram Protocol)。
TCP是面向连接的协议
,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。
UDP是面向无连接的不可靠传输的协议
(,主要用于不需要TCP的排序和流量控制等功能的应用程序。)
应用层(Application Layer)
(把封装好的数据交给传输层,或从传输层接收数据并处理;为应用程序之间的通讯提供规则)
理论上讲,有了以上三层协议的支持,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差,因此,
应用层定义了各种各样的协议来规范数据格式
,常见的有http,ftp,smtp等,在请求Header中,分别定义了
请求数据格式
Accept和
响应数据格式
Content-Type,(有了这个规范以后,当对方接收到请求以后就知道该用什么格式来解析,然后对请求进行处理,最后按照请求方要求的格式将数据返回,请求端接收到响应后,就按照规定的格式进行解读。)
TCP/IP四层结构与OSI七层结构的区别:
TCP/IP协议并不完全符合OSI的七层参考模型;
OSI
(Open System Interconnect)是
传统的开放式系统互连参考模型
,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层(网络接口层)、网络层(网络层)、传输层(传输层)、会话层、表示层和应用层(应用层)。
TCP/IP
通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。由于ARPANET的设计者注重的是网络互联,允许通信子网(网络接口层)采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X.25交换网或IEEE802局域网。
七、TCP/IP五层协议
作用和功能:
1、应用层(application layer)
(1)
直接为用户的应用进程提供服务。
(2)在因特网中的应用层协议有很多,如:支持万维网应用的http协议,支持电子邮件的smtp协议,支持文件传送的ftp协议。
2、传输层(transport layer)
(1)
负责向两个主机中进程之间的通信提供服务;
(2)
由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能;
复用
就是多个应用层进程可同时使用下面运输层的服务;
分用
就是运输层把收到的信息分别交付给上面应用层中的相应进程。
(3)
运输层主要使用以下两种协议:
TCP 传输控制协议(Transmission Control Protocol)
--面向连接的,数据传数单位是报文段(segment),能够提供可靠的交付。
UDP 用户数据报协议(User Datagram Protocol)
--无连接的,数据传输单位是用户数据报,不保证提供可靠的交付,只能提供“尽最大努力交付(best-effort delivery)”。
3、网络层(network layer)
(1)负责为分组交换网上的不同主机提供通信服务;选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。
(2)在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。
因特网是一个很大的互联网,它由大量异构网络通过路由器(router)互联起来。因特网主要的网络协议是无连接的网际协议IP(Internet Protocol)和许多种路由选择协议。
4、数据链路层(data link layer)
将网络层交下来的 IP 数据报组装成正帧(framing),在两个相邻结点间的链路上“透明”地传送帧中的数据。
每一个帧包括数据和必要的控制信息
(如同步信息、地址信息、差错信息等)。
“透明”是一个很重要的术语。表示:某一个实际存在的事物却看起来好像不存在一样。
5、物理层(physical layer)
(1)
在物理层上传输的单位是比特;
(2)
任务:透明的传送比特流。
8.TCP的三次握手,四次挥手
1.三次握手
所谓的“三次握手”:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。
为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号传递地给目标机,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。
为建立TCP连接,通信双方须从对方了解如下信息:
1.对方报文发送的开始序号。
2、对方发送数据的缓冲区大小。
3、能被接收的最大报文段长度MSS。
4、被支持的TCP选项。
在TCP协议中,通信
双方将通过三次TCP报文实现对以上信息的了解
,并在此基础上建立一个TCP连接,而通信双方的三次TCP报文段的交换过程,也就是通常所说的TCP连接建立实现的
三次握手
(Three-Way Handshake)过程。
第一次
第一次握手:建立连接时,
客户端发送syn包(seq=j)到服务器
,并进入SYN_SENT状态(SYN_SENT表示请求连接),等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次
第二次握手:
服务器收到syn包,必须确认客户端的SYN
(ack=j+1),同时
自己也发送一个SYN包
(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态(SYN_RECV 是指, 服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态。 再进一步接收到客户端的ACK就进入 ESTABLISHED 状态。)。
第三次
第三次握手:
客户端收到服务器的SYN+ACK包
,
向服务器发送确认包ACK(ack=k+1)
,此包发送完毕,客户端和服务器进入ESTABLISHED(表示两台机器正在传输数据)(TCP连接成功)状态,
完成三次握
手。
完成三次握手,客户端与服务器开始传送数据.
用一种形象的方式来解释:
1.女朋友向程序员提出约会(Seq = x)的建议,然后女朋友进入SYN_SEND状态。
2.程序员收到后同意了去约会(ACK = x + 1), 然后向女朋友建议去吃麻辣烫吧(Seq = y),程序员进入SYN_RCVD状态。
3.女朋友收到建议后,勉为其难的答应了,然后告诉程序员说 那好吧(ACK = y + 1)。女朋友就进入了ESTABLISHED状态, 程序员也进入了 ESTABLISHED状态,
整个约会讨论结束。
2.四次挥手(连接终止协议)
由于TCP连接是全双工的,因此
每个方向都必须单独进行关闭
。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。
首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭
。
(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送;
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号;
(3) 服务器关闭客户端的连接,发送一个FIN给客户端;
(4) 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。
也可以解释为:
第一步,当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)。
第二步,主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。
第三步,主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段。
第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻释放。