1,ip协议不可靠、无连接特性介绍

不可靠:计算机A往计算机B发送数据报1,若途径的路由器缓存已满,或者ttl(time to live 生存周期)到了,则路由器直接丢弃数据包1,并产生icmp数据包返回给计算机A。

无连接:计算机A向计算机B发送数据报1,2.其中数据包1先于数据包2发送。由于无连接性,两个数据包是独立发送的,故数据包2可能比数据包1先到达计算机B。

2,IP数据报格式:

4位版本:区分ipv4和ipv6

4位首部长度:单位4字节,4位可以有16个值。16*4为64.即理论上IP数据报的首部长度最大为64字节。但书本说最大有60个字节,未说明原因。知道原因的小伙伴谢谢指正。

8位服务类型如下:

16位IP数据报总长度。利用首部长度和总长度,可以知道数据内容的起始位置和长度。并且我们知道,IP数据报的长度最小为46字节(以太网MTU为46-1500字节)。有些情况下,数据内容不足以到达46字节的时候,需要填充一些数据已达到这个要求。这时候就需要通过总长度来区分非填充的数据。

16位标识:每个ip数据报都有个唯一的标识。初始值设置为系统引导时的时间。每发送一份数据报该值都会加1.

3位标志和13位偏移量后面讲分片时候再讲。

ttl:路由器的最大跳数。每经过一个路由器,ip数据报的ttl减1,当ttl减到0,路由器将丢弃该数据报,并产生一个icmp数据报给源主机。ttl的初始值一般为32或64.

16位的CRC(首部检验和):将首部每两个字节进行反码,所得的结果求和后记录为CRC,当经过路由器后,ttl减1,CRC加1.这样保证当数据报到达目的主机可以根据CRC值来判断数据报是否出现错误。CRC全为1时正确的。若不正确,则直接丢弃该数据报,不产生icmp数据报。可以通过上层协议解决可靠性。

选项:都是4字节的。主要功能:时间戳、宽松源站选路、严格源站选路等。不同的机器实现不同,所以选项功能一般不通用。

3,路由表:所含字段

目的主机/网络IP地址、下一跳路由器IP地址、发送接口、标志

目的主机/网络:网络地址,主机号为0.

下一跳路由器IP地址:所需要经过的下一跳路由器ip地址。

发送接口:一个主机可能有多个接口,我们称之为多接口主机。需要指定以哪一个接口发送到下一跳路由器。

标志:标志一个目的主机/网络IP地址时主机地址还是网络地址。也可以标志下一跳路由器时否为最终路由器。

4,搜索路由表的简单算法:

寻找是否有与目的IP地址完全匹配的表目,如果有,则直接按照该表目指定的接口发送到指定的下一跳路由器。

否则,寻找是否有与目的IP地址网络号匹配的表目,如果有,如上所述的操作。

否则,寻找路由器的默认表目,如果有,如上所述的操作。

否则,给应用程序返回主机不可达或网络不可达。

5,子网掩码

通过IP地址可以确定是哪类IP地址(A、B、C、D、E),通过哪类IP地址可以确定网络号与子网号的界限,通过子网掩码可以确定子网和号的界限。子网可以减少外网路由器的路由表规模。试想,30个c类地址可以通过一个B类地址(划分30个子网)来实现。从而减少外部路由器的路由表规模。当然对于内网路由器的路由表时不透明的。

6,ifconfig、netstat命令可以查看网络接口信息。

7,IP的未来

CIDR(无类别的域间选择)。第十章进行介绍。

tcpip第三章的更多相关文章

  1. 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...

  2. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

  3. Python黑帽编程3.0 第三章 网络接口层攻击基础知识

    3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...

  4. 《Entity Framework 6 Recipes》中文翻译系列 (11) -----第三章 查询之异步查询

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第三章 查询 前一章,我们展示了常见数据库场景的建模方式,本章将向你展示如何查询实体 ...

  5. 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16  过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...

  6. 《python核心编》程课后习题——第三章

    核心编程课后习题——第三章 3-1 由于Python是动态的,解释性的语言,对象的类型和内存都是运行时确定的,所以无需再使用之前对变量名和变量类型进行申明 3-2原因同上,Python的类型检查是在运 ...

  7. 精通Web Analytics 2.0 (5) 第三章:点击流分析的奇妙世界:指标

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第三章:点击流分析的奇妙世界:指标 新的Web Analytics 2.0心态:搞定它.新的闪亮系列工具:是的.准备好了吗?当然 ...

  8. 数据结构与算法分析——C语言描述 第三章的单链表

    数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...

  9. Java语言程序设计(基础篇) 第三章 选择

    第三章 选择 3.8 计算身体质量指数 package com.chapter3; import java.util.Scanner; public class ComputeAndInterpret ...

随机推荐

  1. appium的webdriver执行swipe

    # convenience method added to Appium (NOT Selenium 3) def swipe(self, start_x, start_y, end_x, end_y ...

  2. robot framework 牛刀一试

    1.New Project   Type选择Directory,Format选择TXT 2.New Suite   在Project的基础上Create New Suite,Type选择File,Fo ...

  3. C++类静态成员与类静态成员函数

       当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享.各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象 ...

  4. Express异步进化史

    1.导言 在 Javascript 的世界里,异步(由于JavaScript的单线程运行,所以JavaScript中的异步是可以阻塞的)无处不在. Express 是 node 环境中非常流行的Web ...

  5. ABP 框架学习-01篇

    从来没有自己写过太多的技术性文章,博客里面的文章都是拷贝别人的东西,做一个笔记功能给自己用的.最近觉得应该写点自己的学习博客 https://aspnetboilerplate.com/ ABP框架, ...

  6. C#最佳工具集合:IDE、分析、自动化工具等

    C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言.如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理.但是,这个工具列表可能会 ...

  7. java 实现微博,QQ联合登录

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt313 开发平台 http://connect.qq.com/  http:/ ...

  8. jQuery === 面条式代码?

    自从React/Vue等框架流行之后,jQuery被打上了面条式代码的标签,甚至成了"过街老鼠",好像谁还在用jQuery,谁就还活在旧时代,很多人都争先恐后地拥抱新框架,各大博客 ...

  9. Tinyhttpd 代码学习

    前阵子,参加了实习生面试,被面试官各种虐,问我说有没有读过一些开源的代码.对于只会用框架的我来说真的是硬伤啊,在知乎大神的推荐下在EZLippi-浮生志找了一些源代码来阅读,于是从小型入手,找了Tin ...

  10. Linux — 用户组、权限

    Linux 用户组分为:所有者.所在组.其他组 所有者:谁创建,谁是所有者.命令:ls -al 所在组:当创建文件或者文件夹时,这个文件或者文件夹所分配到的用户组,这样就会有效地隔离文件. 其他组:和 ...