TCP/IP协议(3):数据链路层
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):数据链路层的更多相关文章
- 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识
TCP/IP协议:数据链路层,网络层,传输层,应用层. IP地址分为5类:A类.B类.C类.D类.E类. (A类.B类.C类是基本类,D类多用于多播传送,E类为保留类.) "*"表 ...
- OSI七层模型详解 TCP/IP协议
总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...
- TCP/IP协议(二)tcp/ip基础知识
今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...
- TCP/IP协议(一)网络基础知识
参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...
- HTTP协议—— 简单认识TCP/IP协议
大学没读计算机专业,所以很多的专业知识都不知道.既然已经从事了IT这个行业,就势必要去了解下网络底层,虽然实际工作中这些东西用不到.高楼大厦,起于平川.不积跬步,无以至千里,不积小流,无以成江海.我现 ...
- TCP/IP协议学习笔记
计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链 ...
- TCP/IP协议基础(转)
转自 http://www.chinaunix.net 作者:Bernardus160 发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...
- TCP/IP协议(一)
TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协 ...
- TCP/IP协议 HTTP协议
TCP/IP协议 OSI传统的7层参考模型:物理层,数据链路层,网络层,传输层,话路层,表示层和应用层.而TCP/IP协议并不完全符合这7层参考模型,它只采用了其中的应用层,传输层,网络层和数据链路层 ...
- JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo
OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...
随机推荐
- 【mysql】分区表
分区表是什么? 分区表可以按照事先创建的规则,对mysql的记录进行分组,每一个组具有一个独立的逻辑单元来存储该组的数据.典型的如:按照创建时间的年份分组,按照id的顺序分组(每1000万条数据分一个 ...
- 永久激活win和office
1.关闭自己安装的防护软件 2. 关闭电脑自带的防护软件 3.运行 KMSpico
- IIS挂起网站配置文件地址
“C/用户/Administrator/我的文档/IISExpress/Config/applicationhost”
- Windows到Linux的文件上传、下载
1.使用我们常用的Xshell登录工具,新建立一个远程会话,填写ip地址及用户名密码后,选择最下面的ZMODEM,填写下载的路径.加载的路径:2个路径可以一样也可以不一样: 2.在Linux主机上,安 ...
- Android 异步加载数据 AsyncTask异步更新界面
官方文档: AsyncTask enables proper and easy use of the UI thread. This class allows to perform backg ...
- 4J - 前m大的数
还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的M个数告诉她就 ...
- css font-size=0的妙用
转自:css font-size=0有什么妙用? 回答一: 问题的根源是 inline(a标签默认是display:inline) 和 inline-block (.list-info 设置的是 di ...
- oracle表或视图不存在和标识符无效的问题解决
通过dbvisualizer修改表的名字时,一定要改成大写,否则会报错,数据库中没有该表的错误. 如果新的表名为小写,不行! select的时候,可以用小写名. 标识符无效解决:字段名默认都是大写的, ...
- 各种平台的表达芯片跟mRNA-seq数据比较
各种平台的表达芯片跟mRNA-seq数据比较 RNA-Seq 表达谱 芯片数据分析 文章见:http://journals.plos.org/plosone ... ournal.pone.00786 ...
- 洛谷3084 [USACO13OPEN]照片Photo
原题链接 神仙\(DP\)啊... 题解请移步隔壁大佬的博客\(QAQ\) #include<cstdio> using namespace std; const int N = 2e5 ...