TCP/IP学习记录,如有错误请指正,谢谢!!!

TCP/IP协议族之链路层(二)

链路层是最底层协议,主要有三个目的:
1. 为IP模块发送和接收IP数据报
2. 为ARP模块发送ARP请求和接收ARP应答
3. 为RARP发送RARP请求和接收RARP应答。

TCP/IP支持多种不同的链路层协议,这取决于硬件。如:以太网、令牌环网、FDDI(光纤分布式数据接口)及RS232串行线路等。

以太网链路层协议

以太网这个术语一般指数字设备公司(Digital Equipment Corp.)、英特尔公司(Intel Corp.)和Xerox公司在1982年联合公布的一个标准,是当今TCP/IP采用的主要局域网技术,采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection),速率为10Mb/s,地址为48bit。

串行接口链路协议(SLIP: Serial Line IP 和PPP: Point to Point Protocol)

SLIP协议定义的帧格式
	1. IP数据报以一个称作END(0xc0)的结束字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多娄实现在数据报开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前面一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
2. 如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它。0xdb这个特殊字符被称作SLIP的ESC字符,但它的值与ASCII码的ESC字符(0x1b)不同。
3. 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd取代它。

SLIP的缺陷
	1. 每一端必须知道对方的IP地址。
2. 数据帧中没有类型字段,如果一条串行线路用于SLIP,那么它不能同时使用其它协议。
3. 没有在数据帧中加上校验和,如果出错只能通过上层协议来发现。

PPP修改了SLIP的缺陷,包括以下三部分

	1. 在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步,还面向比特链接。
2. 建立、配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。
3. 针对不同网络层协议的网络控制协议(NCP: Network Control Protocol)体系。当前RFC定义的网络层有IP、 OSI网络层、 DECnet以及AppleTalk。

PPP数据帧格式

	每一帧都以0x7e开始和结束,紧接着一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节,接下来是协议字段,0x0021表示信息是一个IP数据报,0xc021表示信息是链路控制数据,0x8021表示信息是网络控制数据。CRC字段是循环冗余检验码。
由于标志字符的值是0x7e,字段出现该字符时需要转义,具体过程如下:
1. 当遇到0x7e,需连续传送两个字符:0x7d和0x5e,实现标志转义。
2. 当遇到0x7d,需连续传送两个字符:0x7d和0x5d,以实现转义字符的转义。
3. 默认情况下,如果字符的值小于0x20(比如,一个ASCII控制字符),一般都要进行转义。(例如,遇到字符0x01时需连续传两个字符0x7d 和 0x21(这时正好是0x01第六个比特取补码后变为1,而前面两种情况均把它变为0)。

PPP较SLIP的优点

	1. PPP支持在单根串行线路上运行多种协议,不只是IP协议。
2. 每一帧都循环冗余检验。
3. 通信双方可以进行IP地址的动态协商(使用IP网络控制协议)。
4. 与CSLIP相似,对TCP和IP报文首部进行压缩。
5. 链路控制协议可以对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加3个字节。

最大传输单元MTU

    以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节,链路层这个特性称作MTU。如果IP层有一个数据报要传,而且数据的长度比链路层的MTU不大,那么IP层就需要进行分片,把数据报分成若干片,这样每一片都小于MTU。

TCP/IP协议族之链路层(二)的更多相关文章

  1. Android网络编程系列 一 TCP/IP协议族之链路层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RA ...

  2. Android网络编程系列 一 TCP/IP协议族之网际层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 网际层包括:IP.ICMP.IGMP 以及处在网际层实际工作在链路层的 ARP 和 RARP等等协议. 1.IP协议 互联网 ...

  3. TCP/IP协议学习(六) 链路层详解

    学习知识很简单,但坚持不懈却又是如此的困难,即使一直对自己说"努力,不能停下"的我也慢慢懈怠了... 闲话不多说,本篇将讲述TCP/IP协议栈的链路层.在本系列第一篇我讲到,TCP ...

  4. Android网络编程系列 一 TCP/IP协议族之传输层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 传输层中有TCP协议与UDP协议. 1.UDP介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,U ...

  5. Android网络编程系列 一 TCP/IP协议族

    在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...

  6. 网络基础之TCP/IP协议族

    一.TCP/IP协议族 1.什么是协议? 计算机与网络设备相互通信依赖于相同的方法,比如,双方通信基于何种语言等.而把通信所依赖的这一切方法统称为规则,而我们就把这种规则称为协议. 协议中存在各种各样 ...

  7. OSI模型和TCP/IP协议族(三)

    TCP/IP协议族 TCP/IP协议族的开发要比OSI模型更早,因此TCP/IP协议族的分层结构无法准确地与OSI模型一一对应.原始的TCP/IP协议族定义为建立再硬件基础上的四个软件层,不通过目前T ...

  8. <TCP/IP原理> (二) OSI模型和TCP/IP协议族

    1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...

  9. TCP/IP知识总结(TCP/IP协议族读书笔记二)

    接下来,总结一下网络层的协议,IP,ARP,RARP,ICMP,IGMP.当我们在网络传输的过程中,把分组交付到主机或路由器需要两级地址:物理地址和逻辑地址.而且我们需要能够把物理地址映射成为相应的逻 ...

随机推荐

  1. Java设计模式—原型模式

    原型设计模式是一种比较简单的设计模式,在项目中使用的场景非常多. 个人理解: 原型模式实现了对Java中某个对象的克隆功能,即该对象的类必须implements实现Cloneable接口来标识为可被克 ...

  2. [转载]hive中order by,sort by, distribute by, cluster by作用以及用法

    1. order by     Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的 ...

  3. #学习tips——写给自己的语录

    用编程证明自己的观点! "我以为我懂了?"-- 花1/3的时间去学去记,剩下的时间应用做记忆实战. 记录一个转变 2018.6.7 (英文字幕-->无字幕!)good job ...

  4. Java—maven项目管理

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具. Maven环境搭建 http://maven.apache.org/download.c ...

  5. Netty入门3之----Decoder和Encoder

    ​ Netty强大的地方,是他能方便的实现自定义协议的网络传输.在上一篇文章中,通过使用Netty封装好的工具类,实现了简单的http服务器.在接下来的文章中,我们看看怎么使用他来搭建自定义协议的服务 ...

  6. js 获取URL中参数

    function getQueryString() { var result = location.search.match(new RegExp("[\?\&][^\?\& ...

  7. Linux内核收包过程

    net/core/dev.c int __init net_dev_init(void) { queue->backlog.poll = process_backlog; open_softir ...

  8. redis知识树

  9. python UI自动化实战记录七:页面2用例编写

    使用python自带的unittest测试框架,用例继承自unittest.TestCase类. 1 引入接口类和页面类 2 setUp函数中打开页面,定义接口对象 3 tearDown函数中关闭页面 ...

  10. 全链路实践Spring Cloud 微服务架构

    Spring Cloud 微服务架构全链路实践Spring Cloud 微服务架构全链路实践 阅读目录: 网关请求流程 Eureka 服务治理 Config 配置中心 Hystrix 监控 服务调用链 ...