OSI数据链路层上的协议有Ethernet/IEEE802.3/IEEE802.4/IEEE802.5、 ARP、RARP等。

1、Ethernet(以太网)

链路层支持很多协议,比如Ethernet、IEEE802.3、IEEE802.4、IEEE802.5等,使用哪种协议取决于网络所使用的硬件。

TCP/IP使用Ethernet以太网来作为LAN局域网上的技术,它采用一种称作CSMA/CD(带冲突检测的载波侦听多路接入)的媒体接入方法,标准以太网的传输速率为10Mbps,以太网帧格式如下:

IEEE802.3:以“以太网”为技术原形,本质特点是采用CSMA/CD 的介质访问控制技术的网络.IEEE802.3与Ethernet略有区别,但在忽略网络协议细节时,人们习惯将IEEE 802.3称为Ethernet。IEEE802.4针对令牌总线网络,IEEE802.5针对令牌环网络。

2、MAC地址

MAC地址就是物理地址,它由二层数据链路层负责,以太网帧头的源地址和目的地址就是指MAC地址。一块网卡对应一个MAC地址,MAC地址使用6个字节来表示,它是由IEEE管理的,每个MAC地址都是全球唯一的。两台主机通信,最终是通过网卡将数据发送给对方的,所以知道目的主机的MAC地址很重要。

3、ARP、RARP

ARP是地址解析协议,它可以根据主机内网IP地址获取其MAC地址,在IPV6中使用NDP来代替ARP。ARP工作在局域网内,当数据从WAN发送到路由器、局域网内两台同网段的主机收发数据、局域网内两台不同网段的主机收发数据 等情况都会使用ARP协议。

①:局域网内两台同网段的主机收发数据:每台主机(包括路由器)都会维护一个ARP缓存表,上面保存了IP地址和MAC地址的映射关系。当源主机向目的主机发送数据的时候会在ARP缓存表里根据目的主机IP地址查询其MAC地址,如果查到的话就将数据中MAC地址填充,然后发给目的主机。如果在ARP缓存表中没有找到目的主机的MAC地址则会向本地网段发起一个ARP请求的广播数据包,收到广播包的目的主机同样会将源主机MAC地址写入自己的ARP缓存表中,然后发回一个ARP应答包,里面包含了目的主机的MAC地址,其他非目的主机会忽略该ARP广播。这样源主机就得到了目的主机的MAC地址,然后将它写入ARP缓存表中,这样就可以向目的主机发送数据了。

②:局域网内两台不同网段的主机收发数据:比如源主机位于192.168.0网段,目的主机位于192.168.1网段。源主机向目的主机发送数据时需要通过ARP获得目的主机MAC地址,而这时发现目的主机不在同一网段内,需要使用默认网关(路由器),源主机同样通过发送ARP广播获得默认网关的MAC地址,然后源主机将默认网关MAC地址填充到数据报并发送给网关,网关收到数据后通过检查目的IP地址发现不是给自己的,所以要对数据进行路由,根据它的路由表继续做转发,通过ARP协议获得另一个路由器的MAC地址,然后将目标路由器MAC地址写入数据报发给目标路由器,目标路由器收到数据后通过检查IP地址发现目标主机位于本网段中,然后它同样通过ARP协议获得目标主机的MAC地址,将目标主机MAC地址写入数据报并发送给目标主机。

③:当数据从WAN发送到路由器:路由器通过NAT获得目标主机的内网IP,然后通过ARP协议获得目标主机的MAC地址,将MAC地址填入数据报后发往目标主机。

ARP欺骗:A发送广播请求C的MAC地址,而B收到广播后冒充C进行回应(ARP应答数据中目的IP地址为C而MAC地址为B),A收到回应后会认为B就是C。

RARP是反向地址转换协议使只知道自己硬件地址的主机能够知道其IP地址,这种主机往往是无盘工作站,因此RARP协议目前已很少使用。

4、MTU

MTU(Maximum Transmission Unit)称为最大传输单元,它跟链路层协议有着密切的关系,对于以太网传输来说,由于其电气方面的限制,每个以太网帧的大小都有最大1518bytes和最小64bytes的限制,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。由于以太网最大的数据帧是1518Bytes,刨去其帧头14Bytes和帧尾CRC校验部分4Bytes,那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes,这个值我们就把它称之为MTU。

因为有MTU这个限制,所以网络层的IP协议负责检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理,这就是所谓的“IP分片”,分片最大的坏处就是降低了传输性能。

如果应用使用的是TCP协议的话,那么分片的工作就由TCP协议处理了,因为TCP协议中有MSS(最大分段大小)来进行类似IP协议中这种检查,这就是“TCP分段”。下面这张图解释了MTU和MSS的关系,可以看出来MSS最大为MTU(1500)-IP头长度(20)-TCP头长度(20) = 1460:

为什么有了“IP分片”还会有“TCP分段”?这是因为如果IP层分的某一片数据丢失了,由于TCP不知道也不关心IP层分片的细节,所以保证可靠性的TCP协议会对整个数据包进行重传,所以TCP会加入MSS来避免IP层的分片,而UDP协议不保证可靠性,所以它可以直接使用IP层的分片。

TCP/IP协议(3):数据链路层的更多相关文章

  1. 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识

    TCP/IP协议:数据链路层,网络层,传输层,应用层. IP地址分为5类:A类.B类.C类.D类.E类. (A类.B类.C类是基本类,D类多用于多播传送,E类为保留类.) "*"表 ...

  2. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

  3. TCP/IP协议(二)tcp/ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

  4. TCP/IP协议(一)网络基础知识

    参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...

  5. HTTP协议—— 简单认识TCP/IP协议

    大学没读计算机专业,所以很多的专业知识都不知道.既然已经从事了IT这个行业,就势必要去了解下网络底层,虽然实际工作中这些东西用不到.高楼大厦,起于平川.不积跬步,无以至千里,不积小流,无以成江海.我现 ...

  6. TCP/IP协议学习笔记

    计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链 ...

  7. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

  8. TCP/IP协议(一)

    TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协 ...

  9. TCP/IP协议 HTTP协议

    TCP/IP协议 OSI传统的7层参考模型:物理层,数据链路层,网络层,传输层,话路层,表示层和应用层.而TCP/IP协议并不完全符合这7层参考模型,它只采用了其中的应用层,传输层,网络层和数据链路层 ...

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

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

随机推荐

  1. 1.尽量以const ,enum,inline替换define

    1.#define为预处理阶段命令 原因:有可能记号名称没有进入记号表,而出现编译错误,即编译器并没看到过该定义. class专属常量const 一般定义为static,保证该常量至多有一份实体. 枚 ...

  2. linux命令学习之:wc

    wc(Word Count)命令用来计算数字.利用wc指令我们可以计算文件的Byte数.字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据. 命令格式 wc ...

  3. 编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'

    80*25彩色字符模式显示缓冲区的结构: 内存地址空间中,B8000H~BFFFFH共32KB的空间,为80*25彩色字符模式的显示缓冲区.向这个地址空间写入数据,写入的内容将立即出现在显示器上. 在 ...

  4. 创建smartfroms页格式

    1.输入TCODE:spad 2.页格式:完全管理  ---> 设备类型 ---> 页格式 ---> 创建 3.比如:长:24.2cm 宽:11.5cm 则设置:纸宽:115MM 纸 ...

  5. rbac 表结构的。设计

    1. 问:为什么程序需要权限控制? 答:生活中的权限限制,① 看灾难片电影<2012>中富人和权贵有权登上诺亚方舟,穷苦老百姓只有等着灾难的来临:② 屌丝们,有没有想过为什么那些长得漂亮身 ...

  6. 17.Mysql分区

    17.Mysql分区分区是指根据一定的规则把一个表分解成多个部分,逻辑上仍是一张表,实际上由多个物理分区对象组成.分区对于应用是完全透明的,不影响业务逻辑和SQL编写.分区的优点: 可以存储更多的数据 ...

  7. org.apache.commons.net.ftp

    org.apache.commons.NET.ftp Class FTPClient类FTPClient java.lang.Object Java.lang.Object继承 org.apache. ...

  8. PAT 1080 MOOC期终成绩(25)(STL-map及multiset+思路+测试点分析)

    1080 MOOC期终成绩(25 分) 对于在中国大学MOOC(http://www.icourse163.org/ )学习"数据结构"课程的学生,想要获得一张合格证书,必须首先获 ...

  9. poj 3624 && hdu 2955(背包入门)

    http://poj.org/problem?id=3624 背包中最基础的01背包,大意是有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总 ...

  10. Numpy 基础运算

    numpy的几种运算 1.一维矩阵运算 >>> import numpy as np >>> a=np.array([10,20,30,40]) # array([ ...