TCP/IP

TCP/IP

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCPIP两个协议,而是指一个由FTPSMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

简介

TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。 [2]

TCP/IP协议是Internet最基本的协议,其中应用层的主要协议有TelnetFTPSMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;而网络访问层,也叫网路接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。

历史

产生背景

Internet网络的前身ARPANET当时使用的并不是传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP),而是一种叫网络控制协议(Network Control Protocol,NCP)的网络协议,但随着网络的发展和用户对网络的需求不断提高,设计者们发现,NCP协议存在着很多的缺点以至于不能充分支持ARPANET网络,特别是NCP仅能用于同构环境中(所谓同构环境是网络上的所有计算机都运行相同的操作系统),设计者就认为“同构”这一限制不应被加到一个分布广泛的网络上。1980年,用于“异构”网络环境中的TCP/IP协议研制成功,也就是说,TCP/IP协议可以在各种硬件和操作系统上实现互操作。1982年,ARPANET开始采用TCP/IP协议。

产生过程

(1)1973年,卡恩与瑟夫开发出了TCP/IP协议中最核心的两个协议:TCP协议和IP协议。 [1]

(2)1974年12月,卡恩与瑟夫正式发表了TCP/IP协议并对其进行了详细的说明。同时,为了验证TCP/IP协议的可用性,使一个数据包由一端发出,在经过近10万km的旅程后到达服务端。在这次传输中,数据包没有丢失一个字节,这充分说明了TCP/IP协议的成功。 [1]

(3)1983年元旦,TCP/IP协议正式替代NCP,从此以后TCP/IP成为大部分因特网共同遵守的一种网络规则。 [1]

(4)1984年,TCP/IP协议得到美国国防部的肯定,成为多数计算机共同遵守的一个标准。 [1]

(5)2005年9月9日卡恩和瑟夫由于他们对于美国文化做出的卓越贡献被授予总统自由勋章。 [1]

TCP/IP协议的组成

TCP/IP协议在一定程度上参考了OSI的体系结构。OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。但是这显然是有些复杂的,所以在TCP/IP协议中,它们被简化为了四个层次。 [1]

(1)应用层、表示层、会话层三个层次提供的服务相差不是很大,所以在TCP/IP协议中,它们被合并为应用层一个层次。 [1]

(2)由于运输层和网络层在网络协议中的地位十分重要,所以在TCP/IP协议中它们被作为独立的两个层次。 [1]

(3)因为数据链路层和物理层的内容相差不多,所以在TCP/IP协议中它们被归并在网络接口层一个层次里。只有四层体系结构的TCP/IP协议,与有七层体系结构的OSI相比要简单了不少,也正是这样,TCP/IP协议在实际的应用中效率更高,成本更低。 [1]

分别介绍TCP/IP协议中的四个层次。

应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。

(1)对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。 [1]

(2)应用层还能加密、解密、格式化数据。 [1]

(3)应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。 [1]

运输层:作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。 [1]

网络层:网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。 [1]

网络接口层:在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

特点

TCP/IP协议能够迅速发展起来并成为事实上的标准,是它恰好适应了世界范围内数据通信的需要。它有以下特点:

(1)协议标准是完全开放的,可以供用户免费使用,并且独立于特定的计算机硬件操作系统

(2)独立于网络硬件系统,可以运行在广域网,更适合于互联网

(3)网络地址统一分配,网络中每一设备和终端都具有一个唯一地址。

(4)高层协议标准化,可以提供多种多样可靠网络服务。

通信过程及相关协议

网络通信的过程中,将发出数据的主机称为源主机,接收数据的主机称为目的主机。当源主机发出数据时,数据在源主机中从上层向下层传送。源主机中的应用进程先将数据交给应用层,应用层加上必要的控制信息就成了报文流,向下传给传输层。传输层将收到的数据单元加上本层的控制信息,形成报文段、数据报,再交给网际层。网际层加上本层的控制信息,形成IP数据报,传给网络接口层。网络接口层将网际层交下来的IP数据报组装成帧,并以比特流的形式传给网络硬件(即物理层),数据就离开源主机。

链路层

以太网协议规定,接入网络的设备都必须安装网络适配器,即网卡,数据包必须是从一块网卡传送到另一块网卡。而网卡地址就是数据包的发送地址和接收地址,有了MAC地址以后,以太网采用广播形式,把数据包发给该子网内所有主机,子网内每台主机在接收到这个包以后,都会读取首部里的目标MAC地址,然后和自己的MAC地址进行对比,如果相同就做下一步处理,如果不同,就丢弃这个包。 [4]

所以链路层的主要工作就是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。 [4]

网络层

IP协议

网络层引入了IP协议,制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的IP地址。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。如果两个IP地址在同一个子网内,则网络地址一定相同。为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过按位与运算后就可以得到网络地址。 [4]

ARP协议

即地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。其工作原理如下:ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 [4]

路由协议

首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。而完成这个路由协议的物理设备就是路由器,路由器扮演着交通枢纽的角色,它会根据信道情况,选择并设定路由,以最佳路径来转发数据包。 [4]

所以,网络层的主要工作是定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。 [4]

传输层

链路层定义了主机的身份,即MAC地址,而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就从可以从一个主机发送到另一台主机。但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包。因此传输层引入了UDP协议来解决这个问题,为了给每个应用程序标识身份。

UDP协议

UDP协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到,因此可靠性较差,为了解决这个问题,提高网络可靠性,TCP协议就诞生了。

TCP协议

TCP即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。简单来说TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。为了保证传输的可靠性,TCP协议在UDP基础之上建立了三次对话的确认机制,即在正式收发数据前,必须和对方建立可靠的连接。TCP数据包和UDP一样,都是由首部和数据两部分组成,唯一不同的是,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。 [4]

传输层的主要工作是定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性。 [4]

应用层

理论上讲,有了以上三层协议的支持,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差,因此,应用层定义了各种各样的协议来规范数据格式,常见的有http,ftp,smtp等,在请求Header中,分别定义了请求数据格式Accept和响应数据格式Content-Type,有了这个规范以后,当对方接收到请求以后就知道该用什么格式来解析,然后对请求进行处理,最后按照请求方要求的格式将数据返回,请求端接收到响应后,就按照规定的格式进行解读。 [4]

所以应用层的主要工作就是定义数据格式并按照对应的格式解读数据。 [4]

安全隐患

链路层上的攻击

在TCP/IP网络中,链路层这一层次的复杂程度是最高的。其中最常见的攻击方式通常是网络嗅探组成的TCP/IP协议的以太网。当前,我国应用较为广泛的局域网是以太网,且其共享信道利用率非常高。以太网卡有两种主要的工作方式,一种是一般工作方式,另一种是较特殊的混杂方式。这一情况下,很可能由于被攻击的原因而造成信息丢失情况,且攻击者可以通过数据分析来获取账户、密码等多方面的关键数据信息。 [3]

网络层上的攻击

ARP欺骗

ARP(地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议。通常情况下,在IP数据包发送过程中会存在一个子网或者多个子网主机利用网络级别第一层,而ARP则充当源主机第一个查询工具,在未找到IP地址相对应的物理地址时,将主机和IP地址相关的物理地址信息发送给主机。与此同时,源主机将包括自身IP地址和ARP检测的应答发送给目的主机。如果ARP识别链接错误,这样的话ARP直接应用可疑信息,那么可疑信息就会很容易进入目标主机当中。ARP协议没有状态,不管有没有收到请求,主机会将任何受到的ARP相应自动缓存。如果信息中带有病毒,采用ARP欺骗就会导致网络信息安全泄露。因此,在ARP识别环节,应加大保护,建立更多的识别关卡,不能只简单通过IP名进行识别,还需充分参考IP相关性质等。 [3]

ICMP欺骗

ICMP协议也是因特网控制报文协议,主要用在主机与路由器之间进行控制信息传递。通过这一协议可对网络是否通畅、主机是否可达、路由是否可用等信息进行控制。一旦出现差错,数据包会利用主机进行即时发送,并自动反回描述错误的信息。该协议在网络安全当中是十分重要的协议。但由于自身特点的原因,其极易受到入侵,通常而言,目标主机在长期发送大量ICMP数据包的情况下,会造成目标主机占用大量CPU资源,最终造成系统瘫痪。 [3]

传输层上的攻击

在传输层还存在网络安全问题。如在网络安全领域中,IP欺骗就是隐藏自己的有效手段,主要是通过将自身IP地址进行伪造,并向目标主机发送恶意的请求,攻击主机,而主机却因为IP地址被隐藏而无法准确确认攻击源。或者通过获取目标主机信任而趁机窃取相关的机密信息。在DOS攻击中往往会使用IP欺骗,这是因为数据包地址来源较广泛,无法进行有效过滤,从而使IP基本防御的有效性大幅度下降。此外,在ICMP传输通道,由于ICMP式IP层的组成部分之一,在IP软件中任何端口向ICMP发送一个PING文件,借此用作申请,申请文件传输是否被允许,而ICMP会做出应答,这一命令可检测消息的合法性。所有申请传输的数据基本上传输层都会同意,造成这一情况的原因主要是PING软件编程无法智能识别出恶意信息,一般网络安全防护系统与防火墙会自动默认PING存在,从而忽视其可能带来的安全风险。 [3]

应用层上的攻击

对于因特网而言,IP地址与域名均是一一对应的,这两者之间的转换工作,被称为域名解析。而DNS就是域名解析的服务器。DNS欺骗指的是攻击方冒充域名服务器的行为,使用DNS欺骗能将错误DNS信息提供给目标主机。所以说,通过DNS欺骗可误导用户进入非法服务器,让用户相信诈骗IP。另外,PTP网络上接口接受到不属于主机的数据,这也是应用层存在的安全问题,一些木马病毒可趁机入侵,造成数据泄露,从而引发网络安全问题。 [3]

安全策略

防火墙技术

防火墙技术的核心是在不安全网络环境中去构建相对安全的子网环境,以保证内部网络安全。可以将其想成为一个阻止输入、允许输入的开关,也就是说防火墙技术可允许有访问权限的资源通过,拒绝其他没有权限的通信数据,在调用过滤器时,会被调到内核当中实现执行,而在服务停止时,会从内核中将过滤规则消除,内核当中所有分组过滤功能运行均在堆栈深层中。同时,还有代理服务型防火墙,其特点是将内网与外网之间的直接通信进行彻底隔离,内网对外网的访问转变为代理防火墙对外网的访问,之后再转发给内网。代理服务器在发现被攻击迹象的时候,会保留攻击痕迹,及时向网络管理员进行示警。 [3]

入侵检测系统

入侵监测系统是近些年兴起的网络安全技术。该技术属于一种动态安全技术,通过对入侵行为特点与入侵过程进行研究,安全系统即刻做出实时响应,在攻击者尚未完成的情况下逐步进行拦截与防护。入侵监测系统也属于网络安全问题研究中的重要内容,借助该技术可实现逻辑补偿防火墙技术,可以实时阻止内部入侵、误操作以及外部入侵,还具有实时报警功能,更是为网络安全防护增添了一道保护网。入侵检测技术有智能化入侵检测、全面安全防御方案与分布式入侵检测三个发展方面。 [3]

访问控制策略

访问控制是保护与防范网络安全的主要策略。由于每一个系统要访问用户是要有访问权限的,只有拥有方位权限才能允许访问,这样的机制就被称为访问控制。这一安全防范策略并不是通过直接抵御入侵行为来实现的,但是,是实际应用的网络防护的重要策略,也是用户迫切需要的。其主要包括两个方面的功能,一个是对外部方位进行合法性检查,这种功能和防火墙相类似,另一个是对从内到外的访问进行一些目标站点检查,封锁非法站点,在服务器上,可以对那些用户进行访问服务限制。 [3]

时效性研究

TCP/IP传输协议的时效性是指,传输的信息在一定的使用情景、时间范围内,数据信息对使用者是有价值的。更宏观的来说,信息的时效性还包括数据信息在传输后引起接受者的兴趣和对社会产生的影响。但随着时间的推移,数据信息的被利用价值就会越来越小。也就是说,针对同一事物的相关数据信息在不同的时间段里有着或大或小的价值差异,这种差异我们叫作数据信息的时效性。TCP/IP传输协议下的数据信息传输,克服了传统信息传输方式的滞后、拖延、效率低下的问题。TCP/IP传输协议往往能及时地将有效信息传输给信息需要者,这就能实现数据信息的价值最大化,保证数据信息的时效性。 [2]

数据的时新性

随着现代社会的高速运转,人们接收的数据信息数量呈爆炸式增长,但数据信息的质量则是参差不齐。所以,人们对于接收到的信息往往会随着时间的流逝便抛之脑后。一般性的事件信息在很短的时间内就可能失去时效。所以说,具有时效性的数据信息一定有着时新性特点,能够与时俱进。而计算机网络中的TCP/IP传输协议的时效性则恰好具有时新性特点。它能利用高速运转的网络技术,及时捕捉科学有效的数据信息。并且能随着时间的变化,自动淘汰过时的无用信息,做到与时俱进。 [2]

数据的灵活性

数据在传输之后,它最终是要满足使用者的需要。计算机网络中的TCP/IP传输协议除了能保障数据信息的时新性,还能根据使用者的不同需求,提供与实际相符的数据信息,具有充分的灵活性和可扩展性。 [2]

数据的安全准确性

数据信息在传输过程中会一般会受传输者、接收者、传输渠道以及外部环境的影响。这些因素会不同程度上影响数据信息输送的及时性。例如由于传输者自身的计算机专业能力的水平有限,没有认识到信息传输的重要性,对数据的收集不够完整和有效,或者是采用了错误的传输方式,都会影响信息传输的时效性。而计算机网络中的TCP/IP传输协议的数据传输,不仅能处理好复杂的信息结构,繁多的数据信息,还能维护数据信息的安全,确保数据信息的科学准确性。 [2]

数据传输过程的流畅性

为了满足当今社会对数据信息的需求,计算机网络中的TCP/IP传输协议在对传统的数据传输过程进行了改善,使得网络信息的传输具备时效性特点,更加快速便捷。基于计算机网络的TCP/IP协议,数据传输流程主要是建立TCP/IP连接、数据发送、数据接收这三个主要环节。这三个环节的无缝连接使得数据信息实现了实时性传输。在TCP/IP传输协议的通信中,为保证数据信息到达目的地址,数据的发送端口和数据的接受端口需要向双方发送信息以确认是否能够建立通信连接。建立TCP/IP连接站口是数据信息传输的前提条件。在建立了TCP/IP连接站口后,就可以进行数据信息的发送。数据信息首先进入发送缓冲区传输层,然后一层一层进行传输。在发送的过程中,传输层协议会对数据信息进行相应地封装,以便实现完整准确的传输。数据信息的接收主要就是接收计算机发送的数据传输电路板的控制命令。目的主机在接收到数据信息包后,首先会进行识别,确定该数据包的有效载体是IP、ARPRARP,然后进行相应地数据解封处理。最后将数据信息发送到需要的应用程序。数据信息传输的过程中三个环节环环相扣,实现了基于计算机网络TCP/IP传输协议的时效性。 [2]

传输技术的先进易用性

能够实现实时性的信息传输,最主要的是离不开网络技术的支持。TCP/IP传输协议能够保证数据信息及时传输,它采用的技术具有先进性,并且容易理解和使用。计算机网络中TCP/IP传输协议主要采用的是先进的数据压缩技术。数据压缩就是文本编码的过程,以便将相同的数据信储存在更少的字节空间。文本占用空间减少、传输速度加快。数据压缩技术允许以最快的操作速度进行实时编码。 [2]

缺陷

像OSl模型一样,TCP/IP模型和协议也有自己的问题。

(1)该模型没有明显地区分服务、接口和协议的概念。因此,对于使用新技术来设计新网络,TCP/IP模型不是一个太好的模板。 [5]

(2)TCP/IP模型完全不是通用的,并且不适合描述除TCP/IP模型之外的任何协议栈。 [5]

(3)链路层并不是通常意义上的一层。它是一个接口,处于网络层和数据链路层之间。接口和层间的区别是很重要的。 [5]

(4)TCP/IP模型不区分物理层和数据链路层。这两层完全不同,物理层必须处理铜缆、光纤和无线通信的传输特征;而数据链路层的工作是确定帧的开始和结束,并且按照所需的可靠程度把帧从一端发送到另一端。 [5]

WEB技术

HTML XHTMLHTML 5CSSTCP/IP
XML XMLXSLXSLTXSL-FOXPathXPointerXLinkDTDXML SchemaDOMXFormsSOAPWSDLRDFRSSWAPWeb Services
Web脚本 JavaScriptHTML DOMDHTMLVBScriptAJAXjQueryJSONE4XWMLScript
Serv脚本 SQLASPADOPHP
.NET Microsoft.NET.NET Mobile
多媒体 SMILSVG

以上参考百度百科IP

转载-原作者IP

首先,网络分层协议到底是几层?有人说七层,有人说四层。

其实,这样说都没错,至于有人说五层,那是瞎扯的,约定俗成的东西是你说5层就5层么?

网络七层协议是OSI是一个开放性的通信系统互连参考模型;而基于TCP/IP的参考模型将协议分成四个层次。

注意,这里说的是基于TCP/IP的参考模型将协议是四层,而且七层指的是OSI网络分层协议。基于TCP/IP的参考模型已经说明自己是TCP/IPl ,而且将表示层和会话层合并,所以看起来就是四层。下面显示两者的不同:

OSI七层网络模型 TCP/IP四层概念模型 对应网络协议 备注说明
应用层(Application) 应用层 TELNET,HTTP,FTP,NFS,SMTP 与其它计算机进行通讯的一个应用,对应应用程序的通信服务的。
表示层(Presentation) 加密,ASCII 定义数据格式及加密。
会话层(Session) RPC,SQL,SOCKET 定义了如何开始、控制和结束一个会话
传输层(Transport) 传输层 TCP, UDP 端到端的逻辑通信链路,负责数据的收发、链路的超时重连
网络层(Network) 网络层 IP, ICMP, ARP, RARP, AKP, UUCP 对端到端的网络连接进行定义
数据链路层(Data Link) 网络接口层 FDDI, Ethernet, Arpanet, PDN, SLIP, PPP 定义了在单个链路上如何传输数据。
物理层(Physical) IEEE 802.1A, IEEE 802.2到IEEE 802.11 传输介质的标准
总结一下,就是:

机器a发送http数据包data机器b,data先穿上http的外衣;
http数据再增加一系列的控制;
再加上tcp的报文头;
再加上ip报文头;
这时候就形成了ip报文,就可以按照链路层协议在网线/无线传输了;
路由器收到一个报文,会解析成ip报文,看下目的ip是给谁了,根据路由规则,转发到相应的路由器;
最后路由器找到了机器b,把报文给b,b按照七层协议一层层剥开,最后发现是个http报文,按照http再剥开,它就是机器a要跟你说的悄悄话。

OSI 七层:

TCP/IP 四层:

原作者IP

TCP/IP分层模型
┌────------────┐┌─┬─┬─-┬─┬─-┬─┬─-┬─┬─-┬─┬─-┐
  │        ││D│F│W│F│H│G│T│I│S│U│ │
  │        ││N│I│H│T│T│O│E│R│M│S│其│
  │第四层,应用层 ││S│N│O│P│T│P│L│C│T│E│ │
  │        ││ │G│I│ │P│H│N│ │P│N│ │
  │        ││ │E│S│ │ │E│E│ │ │E│它│
  │        ││ │R│ │ │ │R│T│ │ │T│ │
  └───────------─┘└─┴─┴─-┴─┴─-┴─┴─-┴─┴─-┴─┴-─┘
  ┌───────-----─┐┌─────────-------┬──--------─────────┐
  │第三层,传输层 ││   TCP   │    UDP    │
  └───────-----─┘└────────-------─┴──────────--------─┘
  ┌───────-----─┐┌───----──┬───—─┬────────-------──┐
  │        ││     │ICMP│          │
  │第二层,网间层 ││     └──—──┘          │
  │        ││       IP            │
  └────────-----┘└────────────────────-------------─-┘
  ┌────────-----┐┌─────────-------┬──────--------─────┐
  │第一层,网络接口││ARP/RARP │    其它     │
  └────────------┘└─────────------┴─────--------──────┘
       TCP/IP四层参考模型

TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。
  TCP/IP分层模型的四个协议层分别完成以下的功能:
  第一层:网络接口层
  包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
  第二层:网间层
  对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。
  第三层:传输层
  对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。
  第四层:应用层
  对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等,这也是本书将要讨论的重点

TCP/IP 三次握手四次挥手

转载IP

tcp协议:

可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

以太网头 ip 头 tcp头 数据

udp协议:

不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

以太网头 ip头 udp头 数据

好比在一个夜高风黑的夜晚,你一个人在小区里散步,不远处看见小区里的一位漂亮妹子迎面而来,但是因为路灯有点暗等原因不能100%确认,所以要通过招手的方式来确定对方是否认识自己。

你首先向妹子招手(syn),妹子看到你向自己招手后,向你点了点头挤出了一个微笑(ack)。你看到妹子微笑后确认了妹子成功辨认出了自己(进入estalished状态)。

但是妹子有点不好意思,向四周看了一看,有没有可能你是在看别人呢,她也需要确认一下。妹子也向你招了招手(syn),你看到妹子向自己招手后知道对方是在寻求自己的确认,于是也点了点头挤出了微笑(ack),妹子看到对方的微笑后确认了你就是在向自己打招呼(进入established状态)。

于是两人加快步伐,走到了一起,彼此之间相互拥抱。

我们来回顾一下,这个过程中总共有四个动作:
1.你招手
2.妹子点头微笑
3.妹子招手
4.你点头微笑

握手完成后,开始TCP数据传输

TCP数据传输就是两个人"交流",然后两个人就回到了家中,开始"交流",但是啊,在交流的过程中不是一下子就交流完的,得反复"交流",并且需要对方反复确认,证明她真的得到了点"什么东西"。

第二天早上啊,妹子意犹未尽,卧槽???意犹未尽什么鬼(可能是没有听够你讲的故事还是啥的...),你反正是有点扛不住了(可能是聊了一晚上天?有点口干了?)。

于是乎你就跟妹子提出了分手,提完分手之后,你还没有起(tí)身(shàng)就(kù)走(zi),你在等妹子给你回复。妹子接收到你的消息之后,脸色大变,然后妹子就说,你先等会,我跟你算算账。算完账之后,跟你说,昨晚1000块,不给我就跟你老婆说,那你能怎么办?认栽呗,给她1000,然后走人。

于是乎经历过四次挥手之后,就断开连接了,但是要记住,不是立马就断开连接,因为你是个渣男,所以你要付出代价,这个后果就是持续4分钟的time_wait状态,不能释放套接字资源(端口),这段时间内套接字资源(端口)不得回收利用。

回顾一下,还是四个动作:
1.你提出分手
2.妹子跟你算账
3.算完账告诉你
4.你给钱

完成四次挥手之后,你还得进入time_wait的状态,付出这个惨痛的代价。

TCP协议的11种状态

三次握手中:
1.SYN_SENT
2.LISTEN
3.SYN_REVD(syn洪水攻击)****半连接池
4.ESTABLISHED

四次挥手中:
1.FIN_WAIT_1
2.CLOSE_WAIT
3.FIN_WAIT_2
4.LAST_ACK
5.TIME_WAIT(TIME_WAIT多,证明服务器上有大并发)

关闭状态:
1.CLOSED(被动关闭端在接收到ack包后,进入CLOSED状态关闭TCP连接)
2.CLOSING(客户端和服务端同时发起断开连接)

会话层

会话层主要三大功能

1.建立会话:A、B两台网络设备之间要通信,要建立一条会话供他们使用,在建立会话的过程中也会有身份验证,权限鉴定等环节;

2.保持会话:通信会话建立后,通信双方开始传递数据,当数据传递完成后,OSI会话层不一定会立刻将两者这条通信会话断开,它会根据应用程序和应用层的设置对该会话进行维护,在会话维持期间两者可以随时使用这条会话传输局;

3.断开会话:当应用程序或应用层规定的超时时间到期后,OSI会话层才会释放这条会话。或者A、B重启、关机、手动执行断开连接的操作时,OSI会话层也会将A、B之间的会话断开。


表示层

表示层主要三大功能:

1.内码转换
2.压缩与解压缩
3.加密与解密。


应用层

应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

应用层功能:规定应用程序的数据格式。

例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。


socket

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。

我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。

能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信


posted @ 2020-07-23 17:45  王顺子  阅读(375)  评论(0编辑  收藏  举报