TCPIP协议各层详解
OSI七层协议
互联⽹协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
TCP/IP协议毫⽆疑问是互联⽹的基础协议,没有它就根本不可能上⽹,任何和互联⽹有关的操作都离不开TCP/IP协议。不管是OSI七层模型还是TCP/IP的四层、五层模型,每⼀层中都要⾃⼰的专属协议,完成⾃⼰相应的⼯作以及与上下层级之间进⾏沟通。由于OSI七层模型为⽹络的标准层次划分,所以我们以OSI七层模型为例从下向上进⾏⼀⼀介绍。
TCP/IP协议毫⽆疑问是互联⽹的基础协议,没有它就根本不可能上⽹,任何和互联⽹有关的操作都离不开TCP/IP协议。不管是OSI七层模型还是TCP/IP的四层、五层模型,每⼀层中都要⾃⼰的专属协议,完成⾃⼰相应的⼯作以及与上下层级之间进⾏沟通。
tcp/ip是个协议组,它可以分为4个层次,即⽹路接⼝层,⽹络层,传输层,以及应⽤层,
在⽹络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层有TCP,UDP协议
⽽在应⽤层有HTTP,FTP,DNS等协议
因此HTTP本⾝就是⼀个协议,是从WEB服务器端传输超⽂本,到本地浏览器的⼀个传输协议
OSI模型
OSI/RM协议是由ISO(国际标准化组织)制定的,它需要三个基本的功能:提供给开发者⼀个休息的,通⽤的概念以便开发完善,可以⽤来解释连接不同系统的框架。
OSI模型定义了不同计算机互联的标准,是设计和描述计算机⽹络通信的基本框架。OSI模型把⽹络通信的基本框架⼯作分为7层,分别是物理层,数据链路层,⽹络层,传输层,会话层,表⽰层和应⽤层
(1)(Physical Layer)
孤⽴的计算机之间要想⼀起玩,就必须接⼊internet,⾔外之意就是计算机之间必须完成组⽹
物理层功能:主要是基于电器特性发送⾼低电压(电信号),⾼电压对应数字1,低电压对应数字0
物理层是OSI参考模型的最低层,它利⽤传输介质为数据链路层提供物理连接。它主要关⼼的是通过
物理链路从⼀个节点向另⼀个节点传送⽐特流,物理链路可能是铜线、卫星、微波或其他的通讯媒介。它关⼼的问题有:多少伏电压代表1?多少伏电压代表0?时钟速率是多少?采⽤全双⼯还是半双⼯传输?总的来说物理层关⼼的是链路的机械、电⽓、功能和规程特性。
(2)(Data Link Layer)
数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位⼀组,每组什么意思
数据链路层的功能:定义了电信号的分组⽅式
数据链路层是为⽹络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为。
数据帧中包含(⼜称MAC地址)、控制码、数据及校验码等信息。该层的主要作⽤是通过校验、确认和反馈重发等⼿段,将不可靠的物理链路转换成对⽹络层来说⽆差错的。
此外,数据链路层还要协调收发双⽅的,即进⾏流量控制,以防⽌接收⽅因来不及处理发送⽅来的⾼速数据⽽导致缓冲器溢出及线路阻塞。早期的时候各个公司都有⾃⼰的分组⽅式,后来形成了同意的标准,即以太⽹协议ethernet
ethernet规定
⼀组电信号构成⼀个数据包,叫做帧
每⼀数据帧分成:报头head和数据data两部分
head包括(固定18个字节)
发送者/源地址,6个字节
接收者/⽬标地址,6个字节
数据类型,6个字节
data包括(最短46字节,最长1500字节)
数据包的具体内容
head长度+data长度=最短64字节,最长1518字节,超过最⼤限制就分⽚发送
mac地址:
head中包括的源和⽬标地址由来:ethernet规定接⼊internet的设备都必须具备⽹卡,发送端和接收端的地址便是指⽹卡的地址,即mac 地址
mac地址:每块⽹卡出⼚时都被烧制上⼀个世界唯⼀的mac地址,长度为48位2进制,通常由12位16进制数表⽰(前六位是⼚商编号,后六位是流⽔线号)
⼴播:
有了mac地址,同⼀⽹络内的两台主机就可以通信了(⼀台主机通过arp协议获取另外⼀台主机的mac地址)
ethernet采⽤最原始的⽅式,⼴播的⽅式进⾏通信,即计算机通信基本靠吼
(3)(Network Layer)
⽹络层是为传输层提供服务的,传送的协议数据单元称为或分组。该层的主要作⽤是解决如何使数据包通过各结点传送的问题,即通过选择算法()将数据包送到⽬的地。另外,为避免中出现过多的数据包⽽造成,需要对流⼊的数据包数量进⾏控制()。当数据包要跨越多个通信⼦⽹才能到达⽬的地时,还要解决⽹际互连的问题。
⽹络层由来:有了ethernet、mac地址、⼴播的发送⽅式,世界上的计算机就可以彼此通信了,
问题是世界范围的互联⽹是由⼀个个彼此隔离的⼩的局域⽹组成的,那么如果所有的通信都采⽤以太⽹的⼴播⽅式,
那么⼀台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,这会是⼀种灾难
规定⽹络地址的协议叫ip协议,它定义的地址称之为ip地址,⼴泛采⽤的v4版本即ipv4,它规定⽹络地址由32位2进制表⽰
范围0.0.0.0-255.255.255.255
⼀个ip地址通常写成四段⼗进制数,例:172.16.10.1
所谓“⼦⽹掩码”,就是表⽰⼦⽹络特征的⼀个参数,它在形式上等同于IP地址,也就是⼀个32位⼆进制数字,它的⽹络部分全部为1,主机部分全部为0。
⽐如,IP地址172.16.10.1,如果已知⽹络部分是前24位,主机部分是后8位,那么⼦⽹络掩码就是
11111111.11111111.11111111.00000000,写成⼗进制就是255.255.255.0。
⼦⽹掩码是⽤来标识⼀个IP地址的那些位是代表⽹络位,以及那些位代表主机位。⼦⽹掩码不能单独存在,它必须结合IP地址⼀起使⽤。⼦⽹掩码只有⼀个作⽤,就是将某个IP地址划分为⽹络地址和主机地址两部分。
tcpip协议pdf
⼴播风暴:6万台主机在⼀个⽹段⾥,通信基本靠吼,任何⼀个⼈要吼⼀嗓⼦,6万多个⼈必须被动听着,⼀会你的⽹络就瘫痪啦。
地址浪费:运营商在公⽹上有很多级联的路由器,有时候2个路由器之间只会⽤掉⼏个IP,如果不进⾏⼦⽹划分,那同⽹段的其它主机也就都不能⽤了。举例两个级联路由器的接⼝ip分别为222.34.24.12/24,222.34.24.13/24, 此可承载255个主机的⽹段只⽤了2个IP,那其它的就全浪费了,因为不能再分配给别⼈。
划分⼦⽹本质上就是借主机位到给⽹络位,每借⼀位主机位,这个⽹段的可分配主机就会越少,⽐如192.168.1.0/24可⽤主机255个,借⼀位变成192.168.1.0/25,
那可⽤主机就从255-128=127个了(从最⼤的值开始借),再借⼀位192.168.1.0/26,
那可⽤主机数就变成了255-(128+64)=63个啦
IP地址分类:
IP地址根据⽹络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。
1. A类IP地址:⼀个A类IP地址由1字节的⽹络地址和3字节主机地址组成,⽹络地址的最⾼位必须是“0”,地址范围从1.0.0.0 到
126.0.0.0。可⽤的A类⽹络有126个,每个⽹络能容纳1亿多个主机。
2. B类IP地址:⼀个B类IP地址由2个字节的⽹络地址和2个字节的主机地址组成,⽹络地址的最⾼位必须是“10”,地址范围从128.0.0.0到
191.255.255.255。可⽤的B类⽹络有16382个,每个⽹络能容纳6万多个主机。
3. C类IP地址:⼀个C类IP地址由3字节的⽹络地址和1字节的主机地址组成,⽹络地址的最⾼位必须是“110”。范围从192.0.0.0到
223.255.255.255。C类⽹络可达209万余个,每个⽹络能容纳254个主机。
4. D类地址⽤于多点⼴播(Multicast): D类IP地址第⼀个字节以“lll0”开始,它是⼀个专门保留的地址。它并不指向特定的⽹络,⽬前这
⼀类地址被⽤在多点⼴播(Multicast)中。多点⼴播地址⽤来⼀次寻址⼀组计算机,它标识共享同⼀协议的⼀组计算机。
5. E类IP地址以“llll0”开始,为将来使⽤保留。
全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)
是当前⼦⽹的⼴播地址。
回环地址(127.0.0.1) ⼜称为本机地址,那它跟0.0.0.0是什么区别呢?那得先了解回环接⼝
环回接⼝(loopback)。平时我们⽤127.0.0.1来尝试⾃⼰的机器服务器好使不好使。⾛的就是这个loopback接⼝。对于环回接⼝,有如下三点值得注意:
传给环回地址(⼀般是127.0.0.1)的任何数据均作为IP输⼊。
传给⼴播地址或多播地址的数据报复制⼀份传给环回接⼝,然后送到以太⽹上。这是因为⼴播传送和多播传送的定义包含主机本⾝。
任何传给该主机IP地址的数据均送到环回接⼝。
IP报⽂:
IP协议是TCP/IP协议的核⼼,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输,要注意的是,IP不是可靠的协议,这是说,IP协议没有提供⼀种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是⼀个可靠的协议,⽽UDP就没有那么可靠的区别
TTL这个字段规定该数据包在穿过多少个路由之后才会被抛弃(这⾥就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过⼀个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被⾃动抛弃。这个字段的最⼤值也就是255,也就是说⼀个协议包也就在路由器⾥⾯穿⾏255次就会被抛弃了,根据系统的不同,这个数字也不⼀样,⼀般是32或者是64。
ARP协议
arp协议由来:计算机通信基本靠吼,即⼴播的⽅式,所有上层的包到最后都要封装上以太⽹头,然后通过以太⽹协议发送,在谈及以太⽹协议时候,我门了解到
通信是基于mac的⼴播⽅式实现,计算机在发包时,获取⾃⾝的mac是容易的,如何获取⽬标主机的mac,就需要通过arp协议
arp协议功能:⼴播的⽅式发送数据包,获取⽬标主机的mac地址
协议⼯作⽅式:每台主机ip都是已知的
例如:主机172.16.10.10/24访问172.16.10.11/24
⼀,⾸先通过IP地址和⼦⽹掩码区分出⾃⼰所处的⼦⽹
场景数据包地址
同⼀⼦⽹⽬标主机mac,⽬标主机IP
不同⼦⽹⽹管mac,⽬标主机IP
⼆,分析172.16.10.10/24与172.16.10.11/24处于同⼀⽹络(如果不是同⼀⽹络,那么下表中⽬标ip为172.16.10.1,通过arp获取的是⽹关的mac)
源mac⽬标mac源ip⽬标ip数据部分
发送端主机发送端mac FF:FF:FF:FF:FF:FF172.16.10/24172.16.10.11/24数据
三:这个包会以⼴播的⽅式在发送端所处的⼦⽹内传输,所有主机接收后拆开包,发现⽬标ip为⾃⼰的,就响应,返回⾃⼰的mac
ICMP(⽹络控制报⽂)协议
IP协议并不是⼀个可靠的协议,它不保证数据被送达,那么,⾃然的,保证数据送达的⼯作应该由其他的模块来完成。其中⼀个重要的模块就是ICMP(⽹络控制报⽂)协议。
当传送IP数据包发⽣错误--⽐如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机⼀个处理错误的机会.
我们⼀般主要⽤ICMP协议检测⽹络是否通畅,基于ICMP协议的⼯具主要有ping 和traceroute
ping这个单词源⾃声纳定位,⽽这个程序的作⽤也确实如此,它利⽤ICMP协议包来侦测另⼀个主机是否可达。原理是⽤类型码为0的ICMP 发请求,受到请求的主机则⽤类型码为8的ICMP回应。ping程序来计算间隔时间,并计算有多少个包被送达。⽤户就可以判断⽹络⼤致的情况。我们可以看到, ping给出来了传送的时间和TTL的数据。
traceroute ⽤来查看从当前主机到某地址⼀共经过多少跳路由
(4)(Transport Layer)
传输层的作⽤是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向⾼层屏蔽了下层数据通信的细节,使⾼层⽤户看到的只是在两个传输实体间的⼀条主机到主机的、可由⽤户控制和设定的、可靠的。
传输层传送的协议数据单元称为段或报⽂。
传输层的由来:⽹络层的ip帮我们区分⼦⽹,以太⽹层的mac帮我们到主机,然后⼤家使⽤的都是应⽤程序,你的电脑上可能同时开启qq,暴风影⾳,迅雷等多个应⽤程序,
那么我们通过ip和mac到了⼀台特定的主机,如何标识这台主机上的应⽤程序呢?答案就是端⼝,端⼝即应⽤程序与⽹卡关联的编号。
传输层功能:建⽴端⼝到端⼝的通信
补充:端⼝范围0-65535,0-1023为系统占⽤端⼝
传输层有两种协议,TCP和UDP,见下图
TCP协议
TCP是⾯向连接的通信协议,通过三次握⼿建⽴连接,通讯完成时要拆除连接,由于TCP是⾯向连接的所以只能⽤于端到端的通讯。TCP提供的是⼀种可靠的数据流服务,采⽤“带重传的肯定确认”技术来实现传输的可靠性。TCP还采⽤⼀种称为“滑动窗⼝”的⽅式进⾏流量控制,所谓窗⼝实际表⽰接收能⼒,⽤以限制发送⽅的发送速度。可靠传输,TCP数据包没有长度限制,理论上可以⽆限长,但是为了保证⽹络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
最可靠的⽅式就是只要不得到确认,就重新发送数据报,直到得到对⽅的确认为⽌。
tcp报⽂
TCP协议的三次握⼿和四次挥⼿:
三次握⼿:
client发送请求建⽴通道;
server收到请求并同意,同时也发送请求建通道;
client收到请求并同意,建⽴完成
四次挥⼿:
client发送请求断开通道;
server收到请求并同意,同时还回复client上⼀条消息;
server也发送请求断开通道;
client受到消息结束
注:seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;;ACK:"acknowledge"确认标志";FIN:"Finally"结束标志。
TCP连接建⽴过程:⾸先Client端发送连接请求报⽂,Server段接受连接后回复ACK报⽂,并为这次连接分配资源。Client端接收到ACK报⽂后也向Server段发⽣ACK报⽂,并分配资源,这样TCP连接就建⽴了。
TCP连接断开过程:假设Client端发起中断连接请求,也就是发送FIN报⽂。Server端接到FIN报⽂后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进⼊FIN_WAIT状态,继续等待Server端的FIN报⽂。当Server 端确定数据已发送完成,则向Client端发送FIN报⽂,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报⽂后,"就知道可以关闭连接了,但是他还是不相信⽹络,怕Server端不知道要关闭,所以发送ACK后进⼊TIME_WAIT状态,如果Server端没
有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连
接就这样关闭了!
假设Client想跟Server建⽴连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送⼀遍;这个时候Server端仅收到⼀个连接请求,因此可以正常的建⽴连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,⽽是有可能数据传输过程因为⽹络并发量很⼤在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据...问题就在这⾥,Cient端实际上只有⼀次请求,⽽Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据⽽导致Server端最后建⽴了N多个响应在等待,因⽽造成极⼤的资源浪费!所以,“三次握⼿”很有必要!
第⼀步,你⾃⼰先停⽌向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你⾃⾝不往Server发送数据了,但是因为你们之前已经建⽴好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终⽌主动向你发送数据,并等待你的确认。其实,说⽩了就是保证双⽅的⼀个合约的完整执⾏!
使⽤TCP的协议:FTP(⽂件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,⽤于接收邮件)、HTTP协议等。
UDP协议
UDP⽤户数据报协议,是⾯向⽆连接的通讯协议,UDP数据包括⽬的端⼝号和源端⼝号信息,由于通讯不需要连接,所以可以实现⼴播发送。UDP通讯时不需要接收⽅确认,属于不可靠的传输,可能会出现丢包现象,实际应⽤中要求程序员编程验证。
UDP与TCP位于同⼀层,但它不管数据包的顺序、错误或重发。因此,UDP不被应⽤于那些使⽤虚电路的⾯向连接的服务,UDP主要⽤于那些⾯向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较⼩。
每个UDP报⽂分UDP报头和UDP数据区两部分。报头由四个16位长(2字节)字段组成,分别说明该报⽂的源端⼝、⽬的端⼝、报⽂长度以及校验值。UDP报头由4个域组成,其中每个域各占⽤2个字节,具体如下:
(1)源端⼝号;
(2)⽬标端⼝号;
(3)数据报长度;
(4)校验值。
使⽤UDP协议包括:TFTP(简单⽂件传输协议)、SNMP(简单⽹络管理协议)、DNS(域名解析协议)、NFS、BOOTP。
TCP 与 UDP 的区别:TCP是⾯向连接的,可靠的字节流服务;UDP是⾯向⽆连接的,不可靠的数据报服务。
(5)(Session Layer)
会话层主要功能是管理和协调不同主机上各种进程之间的通信(对话),即负责建⽴、管理和终⽌应⽤程序之间的会话。会话层得名的原因是它很类似于两个实体间的会话概念。例如,⼀个交互的⽤户会话以登录到计算机开始,以注销结束。
(6)(Presentation Layer)
表⽰层处理流经结点的的表⽰⽅式问题,以保证⼀个系统应⽤层发出的信息可被另⼀系统的应⽤层读出。如果必要,该层可提供⼀种标准表⽰形式,⽤于将计算机内部的多种格式转换成中采⽤的标准表⽰形式。数据压缩和加密也是表⽰层可提供的转换功能之⼀。
(7)(Application Layer)
应⽤层是OSI参考模型的最⾼层,是⽤户与⽹络的接⼝。该层通过应⽤程序来完成⽹络⽤户的应⽤需求,如、收发电⼦邮件等。
⽹络通信三要素
———1:IP地址
(1):⽤来标识⽹络上⼀台独⽴的主机
(2):IP地址=⽹络地址+主机地址(⽹络号:⽤于识别主机所在的⽹络或者⽹段;主机号:⽤于识别该⽹络中的主机)
(3):特殊的IP地址:127.0.0.1(本地回环地址,保留地址,点分⼗进制),可⽤于简单的测试⽹卡是否故障,表⽰本机
———2:端⼝
要将数据发送到对⽅指定的应⽤程序上,为了标识这些应⽤程序,所以给这些⽹络应⽤程序都⽤数字进⾏标识,为了⽅便称呼这些数字,则将这些数字称为端⼝。(此端⼝称为⼀个逻辑端⼝)
———3:传输协议
(1)UDP:user datagram protocol(⽤户数据报协议)
特点:
——1:⾯向⽆连接:传输数据之前源端和⽬的端不需要建⽴连接
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论