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 BeanUtils 组件 使用

    1. BeanUtils组件 1.1 简介 程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件. BeanUtils ...

  2. Apache服务器运维笔记(6)----目录 文件 网络容器的安全问题

    <Directory>.<Files>.<Location> 这三个容器的作用都很相似,都是以容器的形式来封装一组指令对访问进行控制,只是它们的区别在于作用于目录. ...

  3. Python学习系列----第三章 控制流

    在python中有三种控制流语句,分别是: if.for.while. 2.1 if 语句 if 语句用来检验一个条件,如果条件为真,我们运行一块语句(称为 if-块),否 则我们处理另外一块语句(称 ...

  4. Ngnix学习

  5. Linux--sudo权限讲解

    sudo简介:sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等.这样不仅减少了root用户的登录 和管理时间,同 ...

  6. 大数据平台搭建:Hadoop

    To construct big data distributed platform based on Hadoop is a common method. Hadoop comes fron Goo ...

  7. vscode:解决操作git总让输入用户名及密码问题

    只要是使用git操作,不管是同步,拉去,克隆,vscode总让我们输入用户名及密码,是一件很繁琐的事情 我们打开终端,会看到cmd定位在我们仓库位置,我们只要添加:git config --globa ...

  8. cmd:相关命令和笔记

    (1)查看git版本:git --version (2)

  9. June 28th 2017 Week 26th Wednesday

    Anger begins with folly, and ends in repentance. 愤怒以愚蠢开始,以后悔告终. Learn to control your temper, don't ...

  10. webpack学习(三)html-webpack-plugin插件

    一.html-webpack-plugin插件 简单创建 HTML 文件,用于服务器访问 例如:我们要为输出文件添加哈希值标记,避免老的不变的文件重新加载,避免新修改的文件受缓存影响. 在前后两次在终 ...