物理层负责把计算机中的0、1数字信号转换为具体传输媒介的物理信号(电压的高低、电波的强弱、光的闪灭)

数据链路层协议定义了(通过通信介质互连的设备间的)数据传输规范 (常见的通信介质有同轴电缆、双绞线电缆、光纤、电波)

相关技术

MAC地址

数据链路层机器节点的标识,无论是哪种数据链路的网络(如以太网,蓝牙等),等不会有相同的MAC地址

6字节(48比特)

共享介质型网络

共享介质型网络指多个设备共享一个通信介质的一种网络。

多个设备之间使用同一个载波信道进行数据的发送和接受, 这样当一个设备在发送或者接受数据的时候其他设备就只能排队等待。

基本为半双工通信【全双工通信指可以同时进行数据的发送和接受, 而半双工不行】

介质访问控制方式

共享型网络是共享通信信道的, 当一个设备使用的时候其他设备不能再进行数据传输,所以就需要对传输通道的使用进行控制

主要有:争用方式 和 令牌传递两种介质访问控制方式

争用方式(先到先得)

也叫CSMA/CD(载波监听多路访问/冲突检测)

算法如下:

当信道上没有数据传输时,所有的站点都可以发送数据帧

当发生冲突时,放弃发送数据帧, 同时立即释放信道

放弃发送后,随机等待一段时间,再重新争用信道,重新发送帧。(随机等待一段时间避免再次发送数据时也产生冲突)

令牌传递方式

令牌沿着整个网络环传递, 只有获得令牌之后才能发送数据帧。

因为同一时刻只会有一个设备获得令牌, 所以可以保证不会冲突。

但是信道的利用率不会太高(因为即使此刻没有其他设备在传送数据帧,也需要等令牌传递到当前设备才可以发送数据 )

非共享介质型网络

网络中的每个站点直接与交换机端口连接,所以发送方和接收方是不共享传输介质的

可以实现全双工通信

集线器(Hub)

Hub工作在物理层,对接受到的信号进行整形扩大 以扩大网络的传输距离。

它不具有类似交换机的MAC地址表,所以会把数据广播到所有与之相连的节点。

交换机

交换机工作在数据链路层或者网络层(有路由功能)

MAC地址转换表自我学习过程

交换机收到某站点数据帧时,如果源地址和端口不在转换表中就将源地址和端口写到转换表中

然后在转换表中查找目标MAC地址。

如果找到就把数据帧转发到该端口,否则广播到所有端口。

转发方式

有存储转发和直接转发两种方式:

存储转发会校验数据帧的FCS字段 如果检测到帧已经损坏就直接丢弃

直通转发在知道MAC地址之后就开始转发,不校验数据帧

直通转发延迟会更低。

环路检测技术

如果网络成环,数据帧就可能在环中一而再再而三的转发,然后造成网络瘫痪。

有生成树和源路由两种算法:

生成树方式:通过禁用某些端口 将整个网络构成为一棵树,避免成环。

源路由算法:将发送帧的源网桥MAC地址写入数据帧中

VLAN(虚拟局域网)

把交换机根据端口分成多个网段,从而区分了广播数据传播的范围

减少了网络的负载并提供了网络的安全性

当然这样整个网络就有多个网段, 需要利用有路由功能的交换机(L3) 或者路由器连接多个网段

以太网(IEEE802.3)

以太网是一种计算机局域网技术

在网络普及的时候, 多台终端使用同一根同轴电缆的共享介质型的连接方式。

而现在一般采用终端与交换机之间独占电缆的方式实现以太网通信(如下图)

以太网帧

前导码 + 帧体

以太网帧前端有一个前导码的部分, 表示一个以太网帧的开始, 用于与对端网卡进行同步(对齐)

帧体:

6字节目标MAC地址:用于数据链路层寻址(交换机查找转发端口)

类型:上层协议类型(IP等协议)

FCS(帧校验序列):用于check帧在传输过程是否遭到破坏

MTU = 1500

从信道利用率和传输时间两方面考虑,以太网的数据传输范围被限制为(46~1500字节)

信道利用率: 假设实际传输数据X字节,利用率就是X/(X + 18)【实际数据字节数/整个帧字节数, 18是帧头14字节 + 帧尾4字节FCS】, X越大信道利用率就越高

数据最少为46字节: 取46的时候信道利用率为71%[46 / (46 + 18)] ,利用率不会太低(当然还有其他原因)

数据最大为1500字节:

我们知道传输的数据越大, 传输时间就越长

假设100Mbps的网络, 网络层的数据报最大65535字节时数据传输时间就是 65535 / (100 * 1024 *1024 / 8) * 1000 = 4.99ms

如果是共享介质型网络,在这5ms内自己不能接受数据,其他设备不能接受发送数据,不可接受!!!

所以我们需要在链路层对上层数据报进行拆分,1500字节的数据在100Mbps的网络下, 传输时间只需要0.11ms左右,是OK 的。

【网络协议】TCP/IP:数据链路层的更多相关文章

  1. 网络协议TCP/IP、IPX/SPX、NETBEUI简介

    网络中不同的工作站,服务器之间能传输数据,源于协议的存在.随着网络的发展,不同的开发商开发了不同的通信方式.为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言.因而必须开发严格的标准 ...

  2. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  3. 网络知识--OSI七层网络与TCP/IP五层网络架构及二层/三层网络

    作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识. 废话不多说!下面就逐一展开对这两个网络架构知识的说明:一.OSI七层网络协议OSI是Open System Int ...

  4. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络(转)

     reference:https://www.cnblogs.com/kevingrace/p/5909719.html https://www.cnblogs.com/awkflf11/p/9190 ...

  5. Socket网络编程(TCP/IP/端口/类)和实例

    Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...

  6. 加深理解HTTP请求---网络基础TCP/IP

    为了了解HTTP,必须的了解TCP/IP协议族. 通常使用的网络实在TCP/IP协议族的基础上运作的.而HTTP就属于他的一个子集. 1.TCP/IP 协议族 计算机与网络设备要相互通信,双方就必须基 ...

  7. 网络编程TCP/IP详解

    网络编程TCP/IP详解 1. 网络通信 中继器:信号放大器 集线器(hub):是中继器的一种形式,区别在于集线器能够提供多端口服务,多口中继器,每个数据包的发送都是以广播的形式进行的,容易阻塞网络. ...

  8. 网络协议TCP、Http、webservice、socket区别

    网络协议TCP.Http.webservice.socket区别 http 和 webservice 都是基于TCP/IP协议的应用层协议 webservice是基于http的soap协议传输数据 w ...

  9. JavaWeb 获取请求网络协议、IP、端口号、项目根路径

      JavaWeb 获取请求网络协议.IP.端口号.项目根路径 CreateTime--2018年6月1日16点32分 Author:Marydon 1.需求 在项目中,需要使用Java向本程序发送r ...

  10. js 获取请求网络协议、IP、端口号、项目名称

      js 获取请求网络协议.IP.端口号.项目名称 CreationTime--2018年6月19日15点54分 Author:Marydon /** * 获取url请求前缀 * @return ht ...

随机推荐

  1. 程序员必知必会Git的小知识

    单人开发 1.初始化一个仓库 git init //cd到你工作的文件夹,初始化git仓库,默认会生成.git隐藏目录 2.配置自己的信息(Git 不喜欢不愿透漏姓名的人) git config -- ...

  2. 终于有架构师用401页PDF+194张图表把设计模式讲明白了

    十几年来,IT 界也发生了翻天覆地的变化,各种开源框架层出不穷,机器学习大兴其道.但是,在面向对象编程中,设计模式的重要性却不曾改变.与以前一样,在大规模的企业系统开发中,Java和C#仍处于主导地位 ...

  3. React State

    React 里只需要更新组件的state,然后根据新的 state 重新徐娜然用户界面(不要操作DOM). class Clock extends React.Component { construc ...

  4. rabbitmq用户权限

    none:无法登录控制台 不能访问 management plugin,通常就是普通的生产者和消费者. management:普通管理者. 仅可登陆管理控制台(启用management plugin的 ...

  5. 攻防世界——web新手练习区解题记录<1>(1-4题)

    web新手练习区一至四题 第一题view_source: 题目说右键不管用了,我们先获取在线场景来看一看,我们看到这样一个网页,并且右键确实点了没什么反应,而用到右键一般就是查看网页源码 用快捷键(F ...

  6. 【平台开发】— 2.前端:vue-element-admin

    前端我虽然没怎么写过,但也并不陌生.之前做web自动化,网页结构没少看,html,css,js也都断断续续了解过. 如果从空白开始写,肯定还是需要花不少时间的. 好在网上有了不少成熟的后台系统的前端脚 ...

  7. JavaWeb三大器(过滤器、拦截器、监听器)概念梳理

    最近工作碰到了一个问题:项目A需要收集项目B中的用户活跃数信息,最后通过HttpSessionAttributeListener实现.在开发过程中,网上查找了过滤器.拦截器.监听器的帖子,这里对自己收 ...

  8. WebApi 接口传参接参

    阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.“怪异”的get请求 二.post请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.后台发送请求参数的 ...

  9. leetcode刷题-91解码方法

    题目 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数. 示例 1: ...

  10. pwnable.kr之flag

    拿到文件,先运行一下,输出: I will malloc() and strcpy the flag there. take it. 用python查看文件是否有什么保护, Arch: amd64-- ...