TCP/IP五层协议

一、互联网协议模型

osi的七层协议体系结构的概念清楚,理论也比较完善,但它既复杂又不实用,ISO制定的osi协议参考模型的过于庞大、复杂招致了许多批评。于此对照,由技术人员自己开发的TCP/IP协议获得了更为广泛得应用。因为,只需要弄明白TCP/IP五层协议就能了解和明白计算机最底层的通信是怎么回事。
在这里插入图片描述

从应用层到物理层实际就是一个协议的封装过程,从物理层到应用层实际就是解封装的过程。

一、物理层

物理层主要是由双绞线、光缆、无线电波组成,其作用很简单,就是连接不同的计算机,并传递底层电信号,高电压:1,低电压:0。

二、数据链路层

我们在物理层上发送或者接收单纯的0、1是没有意义的,因为我们不知道要发给谁,不知道是谁发送过来的。于是,就有了以太网协议

以太网协议规定:一组电信号构成一个数据包,叫帧,每一帧分为报头(head)和数据(data)两部分。

  • head:固定18个字节。源地址(6字节)、目标地址(6字节)、数据类型(6字节)。
  • data:数据包的具体内容(最短46字节,最长1500字节)。

以太网协议中的地址叫MAC地址,MAC地址是每台计算机唯一的物理地址,是被写在网卡上的。MAC 地址是每个网卡在出厂的时候,由各个厂商直接烧录在网卡上的,而且,这个地址必须是全世界唯一的。 MAC 地址是由 12 位 16 进制的数字表示(前六位是厂商编号,后六位是流水线号),这样不同的厂商之间就不会产生冲突了,自己生产自己的就好了。

交换机

我们直到,两台电脑要通信需要连一个网线,但是如果电脑多了之后,电脑间通信连的线也就多,这样就太乱了。

以太网交换机工作于数据链路层,是一种基于MAC地址识别、完成以太网数据帧转发的网络设备。交换机的工作过程可以概括为“学习、记忆、接收、查表、转发”等几个方面:

  • 学习:通过“学习”可以了解到每个端口上所连接设备的MAC地址。
  • 记忆:将MAC地址与端口编号的对应关系”记忆“在内存中,生产MAC地址表。
  • 接收、查找:从一个端口”接收“到数据帧后,在MAC地址表中”查找“与帧头中目标地址相对应的端口编号。
  • 转发:将数据帧从查到的端口上”转发“出去。

广播

有了MAC地址,以太网就可以进行工作了。理论上讲,我们可以和世界上的每一台连接了互联网的计算机通信了,此时通信的方案是:广播。广播是这样通信的:首先组织好了一个数据包之后,把这个数据包通过电信号发出去,这时整个网络上都会收到你发的这条数据,然后看看整个数据是不是自己的。如果不是就当他不存在,如果是,就接收。虽然效率低点,但毕竟能通信了。

如果你连接到全世界的互联网上,还使用广播方式来通信,就不是效率问题了,而是一个巨大的通信灾难。

三、网络层

首先我们需要了解一个事情,世界大网络(广域网)是由一个一个的互相隔离的小型局域网(子网)组成的,不同的局域网之间使用路由来连接。上面说的交换机是负责组建局域网,研究MAC地址,而路由器是负责组件广域网,研究的是IP地址。

刚才说的广播,只能在一个局域网内进行通信,不可以在大网络上进行广播,有了路由器,就避免了广播风暴的问题。每一个局域网被称为一个广播域,局域网和局域网之间使用路由的方式进行通信(向不同的广播域/子网发送数据包),用路由器把一个局域网里的所有计算机划分成一个个子网。这就需要网络层,网络层引出了一套新的地址来区分不同的局域网/子网,这一套地址就是网络地址

规定网络地址的协议叫IP协议,它定义的地址叫IP地址。

IP地址

目前我们普遍使用的是IPV4,它规定,一个网络地址由32位二进制组成(4字节),所以IP地址的范围:0.0.0.0~255.255.255.255。一个IP地址分为两部分,分别是网络位和主机位。

IP地址的子网掩码则是网络位全为1,主机位全为0。例如IP地址172.13.4.59的子网掩码为255.255.255.0。

网络位形同的IP地址在同一个子网中。

IP协议

IP协议使用IP数据包进行发送数据,IP数据包同样把数据分为了两部分(head和data),并且在发送数据的时候,直接将IP数据包封装到以太网(数据链路层)的data部分。因为以太网data域最长为1500字节,所以如果IP数据包的长度超过1500字节,他会自动分割为若干个以太网数据包分开发送。

  • head:包括以太网头和IP头,长度为20到600字节。
  • data:最长为65515字节。

ARP(Address Resolution Protocol)

我们发送数据的时候会在IP协议(网络层)中填充目标IP地址,但是到了数据链路层我们需要封装以太网协议,这个时候就需要MAC地址了,那么这个MAC地址该如何获取呢?ARP就是通过IP地址来查找MAC地址的一套固定协议,它是数据链路层的内容。

四、传输层

到目前为止,前三层内容已经可以进行数据传输了。但是,我们的一台计算机上可以一次性运行多个网络应用程序,比如QQ、微信两个软件同时运行,都要进行网络传输,是没有办法区分开数据是要发送给哪一个软件的。这个时候就需要引入传输层,传输层定义了端口的概念,每一个网络应用程序占用一个网络端口,不同的程序就用端口把数据隔离,两两互不影响。

  • 端口:应用程序和网卡的关联编号
  • 传输层:建立端口到端口的通信
  • 传输层有两种协议:TCP和UDP

TCP协议和UDP协议

  • TCP协议:可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
  • UDP协议:不可靠传输,”报头“部分一共只有8字节,总长度不超过65535字节,正好放进一个IP数据包。

五、应用层

用户使用的都是应用程序,均工作于应用层,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式。对于用于而言最直观的就是应用层。应用层就是规定应用程序的数据格式。例如:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等。

总结

发送数据其实就是一个封装数据的过程。

应用层就是规定应用程序的数据格式。例如:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等。

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值