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. safari兼容时间格式

    前提: 使用iview的DatePicker组件,保存时间后台接收时间戳 问题: safari中不支持2018-02-13这种格式转为时间戳会显示NaN 解决: new Date('2018/02/1 ...

  2. 表格 滚动条 (tbody部分滚动)

    本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 html <table> <thead> < ...

  3. Java 反射、注解

    1. 泛型 基本用法.泛型擦除.泛型类/泛型方法/泛型接口.泛型关键字.反射泛型! a. 概述 泛型是JDK1.5以后才有的, 可以在编译时期进行类型检查,且可以避免频繁类型转化! // 运行时期异常 ...

  4. 基于SignalR的站点有连接数限制问题及解决方案

    最近在做一个Web项目,由于需要实现客户端和服务器的双向通信,所以就用到了SignalR2.0:站点的运行环境是Win7服务器,IIS7,但遇到了一个问题,就是当客户端连接数到达10个以后,后面的用户 ...

  5. 22_CopyOnWrite容器

    [简述] Copy-On-Write简称COW,是一种程序设计中的优化策略. JDK里的COW容器分为两种:CopyOnWriteArrayList 和 CopyOnWriteArraySet. Co ...

  6. jq重复切换类名

    //重复切换类名"active"$(".probability-rules header").toggleClass("active");

  7. 微信小程序——组件(二)

    在上篇文章组件(一)里已经讲解了如何创建一个项目,现在继续...讲解一个页面布局以及各个组件的使用.在学习过程中,发现小程序支持flex布局,这对于学习过react native的人来说太好了,布局方 ...

  8. .NET预处理器指令

    .NET预处理器指令 做开发以来很少接触到这部分内容,基本上没有用到,偶尔在一些框架中和一些开源项目中会见到,常常因为只关心实现逻辑忽略了这部分的功能.现在自己有点时间了,还是希望能够完整的对这部分做 ...

  9. 在Java中如何进行BASE64编码和解码

    在Java中如何进行BASE64编码和解码 //在Java中如何进行BASE64编码和解码 package me.xzh.study.sun.misc.BASE64; import sun.misc. ...

  10. 【Asp.Net MVC】asp.net mvc Model验证总结及常用正则表达式

    转自:http://www.cnblogs.com/easy5weikai/p/3843131.html 关于Model验证官方资料: http://msdn.microsoft.com/zh-cn/ ...