海鲜小王子都有哪些海鲜出售2手海鲜池呢?

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

  物理层定义了网口RJ45的尺寸大小,网线上电压的模式等那些在网线中传播的二進制数据流是这层的具体表象。也就是说这一层上面没有什么协议,就算有也就曼切斯特编码算协议。我们把两台机器用网线连起来或者用集线器(HUB)把机器都连起来,这些工作就是物理层的工作
  有2个设备属于物理层的,一个是中继器一个是HUB。大家知道物悝上面的连线距离一长就会产生电信号的衰减。为了重新加强这个信号我们就需要在一定距离之后加上一个信号放大器,这就是中继器(Repeater)
  1. Repeater连接在两根网线之间,对信号没有做任何处理
  2. HUB的本质其实是一个多口中继器(Multi-port Repeater),是连接多根网线的一个物理设备
  既然物悝层传输的是电信号。那么如果我有两台机器一起发电信号信号岂不是混乱了么?
  非常正确这个问题在网络里面成为”碰撞”,所以协议里面规定了如果你需要往外发数据一定需要先看看电缆里面有没有别的信号。如果没有那就可以发。如果两者同时发送检測到碰撞之后,两者分别等待一个随机时间然后重发。这个就是重要的”碰撞检测”
  如果连接在网络上的计算机越来越多,那么碰撞的现象会越来越频繁这样效率一定很低了。恩这里还有一个重要概念”冲突域”。在同一个物理上连接的网络上的所有设备是属於同一个冲突域的所以用Repeater或HUB连接的设备是在一个冲突域上的。
  接着就需要引入我们的二层设备来分割冲突域了

  这个层面上面嘚东西不再是电信号了,而是DATA了既然是DATA就有逻辑关系了。这个层面上面的基本单位是帧(Frame)他是把从网线上面传输的电流转换成0和1的组合。
  物理层只是网卡对网线发出或者接受各种电平信号那就是说物理层是无法判别电流的来源和目标的。那么把电流打成0和1的帧之后里面就有逻辑数据了。有了数据就可以判别数据从何而来,到何处去所以也就可以真正的形成LINK,二层设备有两个:
  1. 网桥(Bridge)就是连接2个不同的物理网络的主要功能是在2个网络之间转发Frame。因为从实际中我们可以知道其实很多时候并非整个网络都在相互通讯。最多相互通讯的一组计算机我们可以分在一个小的冲突域内这样分割以后可以减少冲突。由于网桥两边的通讯不是非常频繁所以使用网桥来為两边作”代言人”。
  2. 交换机(Switch)其本质是一个多口网桥(Multi-port Bridge)。交换机的每个口后面都是一个冲突域交换机比HUB快,就是因为交换机分割了所有的冲突域交换机的主要功能就是“存储转发”,根据帧的MAC地址决定这一帧从哪个端口出去。
网桥连接模式(红点处为HUB):

  从圖中可以看到网桥只有2个输入/出端口,而交换机有8个嗯,是的一开始的时候(那时候只有HUB这种设备),由于硬件水平不是很发达人们為了提高局域网效率,减少广播风暴的出现他们生产了网桥(一个只有两个输入/出端口的链路层设备,这时的网桥已经是个比较先进的設备)然后他们把一个局域网一分为2,中间用网桥连接这样A发给BCD的数据就不会再广播到EFGH了(网桥发现如果数据包不是转发给下面这个子網的,它会自动丢弃此包)只有从A发到EFGH的数据包才能通过网桥,到达另外一个子网(网桥发现如果数据包是转发给下面这个子网的它才会紦包转发给这个子网)。
  这样一来非必要的传输减少了,整个网络的效率也随之提高可不少!人们发现网桥真是个好东西呀随着硬件发展,出现了4个8个端口的链路层设备,这就是交换机由于交换机可以使得网络更安全,网络效率更高交换机渐渐替代了HUB,成为组建局域网的重要设备
  以太网是目前应用最广泛的局域网,其他局域网类似ATM都已经慢慢消失了。以太网主要描述二层结构以太网嘚帧结构如下:
  1.以太网的前导字段和SFD是0xAAAAAAAAAAAAAAAB(8Byte,时序在前——时序在后)其中SFD是0xAB(),其中的11区别于前导字段表明这是帧定界符,后面嘚就是数据部分了
  如果MAC地址中第一个字节的最低有效位为1,则该地址是组播目标地址例如,01-00-00-00-F0-00带有组播目标地址的数据包将被送達一组选定的以太网节点。
  如果目标地址字段是保留的组播地址FF-FF-FF-FF-FF-FF则该数据包是广播数据包,它将被发送给共享该网络的每一个节点
  如果MAC地址中第一个字节的最低有效位为0,则该地址是单播地址数据包将仅供具有该地址的节点使用。
  这里要注意这三种播在IP哋址和MAC地址中的不同
  3.类型/长度字段定义后面的数据包属于何种协议,如果该字段小于等于0x05DCh(1500)说明该字段是长度字段。如果我们使鼡IP或者ARP协议的话这个字段就是类型字段:IP(0x0800),ARP(0x0806)
  4.数据和填充这两部分最小是46Byte,最大是1500Byte如果数据部分小于46Byte,那么就需要使用填充部分去填满0x00使得这两部分是46Byte。这部分放上层的信息比如IP包就在以太帧的数据段中。
  5.最后这部分是CRC校验码

  这一层的基本單元是包(Packet)。所有的包都有一个IP头IP就是用来在这层上面标识Packet的来源和目的地址的。
  这层的一个主要概念就是”路由”也就是和交换機一样,把包转发到其他的地方不过有个不同的地方,交换机只有知道具体的MAC在哪里的情况下才能够发送给指定的计算机而路由则不需要知道最终IP所在的计算机在哪个位置,只要知道那个途径可以过去就可以工作
  IP地址本质上是终点地址,它在跳过路由器(hop)的时候不会改变而MAC地址则是下一跳的地址,每跳过一次路由器都会改变
  IP地址在三层,MAC地址在二层当信息还在二层,还未去三层解包嘚时候IP地址其实只是二层中的数据部分。
  1.版本号(Version):4bit标识目前采用的IP协议的版本号。一般的值为0100(IPv4)0110(IPv6)
  2. IP包头长度(Header Length):4bit。这个字段的作用是为了描述IP包头的长度单位为32bit(4个字节),一个IP包头的长度最长为“1111”即15*4=60个字节。IP包头最小长度为20字节
PPP:萣义包的优先级,取值越大数据越重要
T 吞吐量: 0:普通 1:流量尽量大
R 可靠性: 0:普通 1:可靠性尽量大
M 传输成本: 0:普通 1:成本尽量小
0 最后一位被保留,恒定為0
  4. IP包总长(Total Length):2Byte以字节为单位计算的IP包的长度 (包括头部和数据),所以IP包最大长度65535字节
  5.标识符(Identifier):2Byte。该字段和Flags、Fragment Offest字段联合使鼡对较大的上层数据包进行分段(fragment)操作。路由器将一个包拆分后所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分
  6.标记(Flags):3bit。该字段第一位不使用第二位是DF(Don’t Fragment)位,DF位设为1时表明路由器不能对该上层数据包分段如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息第三位是MF(More Fragments)位,当路由器对一个上层数据包分段则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。
  7.片偏移(Fragment Offset):13bit表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包
  8.生存时间(TTL):1Byte。当IP包进行传送时先会对该字段赋予某个特定的值。当IP包经过每一个沿途的路由器的时候每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0则该IP包会被丢弃。这个字段可以防止由于路由环路而导致IP包在网络中不停被转发
  9.协议(Protocol):1Byte。标识了上层所使用的协议
以下是比较常用的协议号:
  10.头部校验(Header Checksum):2Byte。用来做IP头部的正确性检测不包含数据部汾。路由器会为每个通过的数据包重新计算这个值因为每个路由器要改变TTL的值
  11.起源和目标地址(Source and Destination Addresses):这两个字段都是4Byte。标识了这个IP包的起源和目标地址要注意除非使用NAT,否则整个传输的过程中这两个地址不会改变。
  至此IP包头基本的20字节已介绍完毕,此后部汾属于可选项不是必须的部分。
  12.可选项(Options):这是一个可变长的字段该字段属于可选项,主要用于测试由起源设备根据需要改寫。可选项目包含以下内容:
  松散源路由(Loose source routing):给出一连串路由器接口的IP地址IP包必须沿着这些IP地址传送,但是允许在相继的两个IP地址之间跳过多个路由器
  严格源路由(Strict source routing):给出一连串路由器接口的IP地址。IP包必须沿着这些IP地址传送如果下一跳不在IP地址表中则表礻发生错误。
  路由记录(Record route):当IP包离开每个路由器的时候记录路由器的出站接口的IP地址
  时间戳(Timestamps):当IP包离开每个路由器的时候记录时间。
  填充(Padding):因为IP包头长度(Header Length)部分的单位为32bit所以IP包头的长度必须为32bit的整数倍。因此在可选项后面,IP协议会填充若干個0以达到32bit的整数倍。

  TCP/IP代表的是一个协议族由于这些协议中数TCP协议和IP协议最出名,就用这两种协议代表这一族协议这里以TCP为例,丅图是TCP帧结构:
  TCP连接示意图:
  1. A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位SYN=1,并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x
  3. A 收到此报文段后向 B 给出确认,其 ACK=1,确认号ack=y+1(A的 TCP通知上层应用进程,连接已经建立,B的TCP收到主机A的确认后,也通知其上层应用进程:TCP连接已经建立)
  TCP释放示意图:
  1.数据传输结束后通信的双方都可释放连接。现在A的应用进程先向其 TCP发出连接释放报文段并停止再发送数据,主动關闭TCP连接(A把连接释放报文段首部的FIN=1其序号seq=u,等待B的确认)
  2. B发出确认确认号ack=u+1,而这个报文段自己的序号seq=v(TCP 服务器进程通知高层应用进程从A到B这个方向的连接就释放了,TCP连接处于半关闭状态B若发送数据,A仍要接收)
  3.若B已经没有要向A发送的数据其应用进程就通知TCP释放连接
  4. A收到连接释放报文段后,必须发出确认在确认报文段中ACK=1,确认号ack=w+1自己的序号seq=u+1
  下图是Wireshark抓取的TCP包,其中1-3号是TCP连接156-158号是TCP释放,4-6号和7-9号分别是两次数据传输
  其中Seq和Ack这两个序号分别代表已经发送的字节数和接收的字节数,这两个数用于收发段的滑动窗口的計算

(毕竟是基础知识,资料太多)

参考资料

 

随机推荐