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(无类别的域间选择)。第十章进行介绍。

TCP/IP 第三章的更多相关文章

  1. 图解 TCP/IP 第六章 TCP与UDP 笔记6.1 传输层的作用

     图解 TCP/IP  第六章 TCP与UDP   笔记6.1 传输层的作用   传输层必须指出这个具体的程序,为了实现这一功能,使用端口号这样一种识别码.根据端口号,就可以识别在传输层上一层的应用程 ...

  2. TCP/IP协议三次握手与四次握手流程解析

    原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...

  3. TCP/IP协议三次握手与四次握手流程解析(转载及总结)

    原文地址:http://www.2cto.com/net/201310/251896.html,转载请注明出处: TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式  TCP/IP协议的详 ...

  4. TCP/IP的三次握手协议

    关于TCP/IP的三次握手协议,这篇文章中有详细的介绍,很通俗易懂,什么时候忘了,都可以过来瞧两眼,保证很快就明白了. 首先TCP/IP协议分为三个阶段:建立连接(握手阶段),数据传输阶段,连接终止阶 ...

  5. TCP/IP协议三次握手与四次握手

    TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式  TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图:图1 TCP报文格式  上图中有几个 ...

  6. TCP/IP协议三次握手和四次挥手大白话解说

    前言 昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧. TCP(Transmi ...

  7. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器    定义:       ...

  8. 白话解说TCP/IP协议三次握手和四次挥手

    白话解说TCP/IP协议三次握手和四次挥手 1.背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 1.1.问题 有时候聊天的过程中,我的 ...

  9. 图解TCP/IP→第2章基础知识

    ####TCP.IP背景**关键词:ARPANET,UNIX,分组交换技术,*ARPANET(阿帕网),也是全球互联网的鼻祖.阿帕网的成功也充分证明了基于分组交换技术的通信方法的可行性.*20世纪70 ...

随机推荐

  1. 深入python3 (Dive Into Python 3) 在线阅读与下载

    在线阅读:http://book.doucube.com/diveintopython3/  中文版 下载地址:https://github.com/downloads/diveintomark/di ...

  2. Tinyhttpd - 超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client(Qt也有很多第三方HTTP类)

    - 2. Tinyhttpd tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Htt ...

  3. 对std::string和std::wstring区别的解释,807个赞同,有例子

    807down vote string? wstring? std::string is a basic_string templated on a char, and std::wstring on ...

  4. mybatis 使用经验小结 good

    一.多数据源问题 主要思路是把dataSource.sqlSesstionFactory(用来产生sqlSession).MapperScannerConfigurer在配置中区分开,各Mapper对 ...

  5. linux下一个C语言要求CPU采用

    部分   从灾难中 本来我想写一个小程序来测试CPU其他工具利用它可以检验类数据的性能.以后参考IPbench中间cpu_target_lukem插件实现我们的功能.原理非常简单:就是我们给程序设置了 ...

  6. ORACLE 时间加减操作

    DATE和timestamp类型都可以进行加减操作.可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinterval增加小时,分钟和秒2 加一个 ...

  7. windows Hook 消息分类

    调用SetWindowsHookEx的DLL的模块实例句柄,它可以经由DllMain入口的第一个参数得到.HHOOK SetWindowsHookEx( int idHook,HOOKPROC lpf ...

  8. Bootstrap 分页翻页

    @{    Layout = null;}<!DOCTYPE html><html><head>    <meta name="viewport&q ...

  9. 使用委托实现c#,窗体与窗体之间的传值

    主界面: Form1中的代码: namespace _06委托练习_窗体传值{    public partial class Form1 : Form    {        public Form ...

  10. DJango xadmin 表头和标底设置,显示隐藏和显示

    xadmin文件中的xadmin.pyfrom xadmin import views class GlobalSetting(object): site_title = "zwb" ...