tcpip第三章
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第三章的更多相关文章
- 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...
- 《Linux内核设计与实现》读书笔记 第三章 进程管理
第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...
- Python黑帽编程3.0 第三章 网络接口层攻击基础知识
3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...
- 《Entity Framework 6 Recipes》中文翻译系列 (11) -----第三章 查询之异步查询
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第三章 查询 前一章,我们展示了常见数据库场景的建模方式,本章将向你展示如何查询实体 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16 过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...
- 《python核心编》程课后习题——第三章
核心编程课后习题——第三章 3-1 由于Python是动态的,解释性的语言,对象的类型和内存都是运行时确定的,所以无需再使用之前对变量名和变量类型进行申明 3-2原因同上,Python的类型检查是在运 ...
- 精通Web Analytics 2.0 (5) 第三章:点击流分析的奇妙世界:指标
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第三章:点击流分析的奇妙世界:指标 新的Web Analytics 2.0心态:搞定它.新的闪亮系列工具:是的.准备好了吗?当然 ...
- 数据结构与算法分析——C语言描述 第三章的单链表
数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...
- Java语言程序设计(基础篇) 第三章 选择
第三章 选择 3.8 计算身体质量指数 package com.chapter3; import java.util.Scanner; public class ComputeAndInterpret ...
随机推荐
- C# 异步编程1 APM模式异步程序开发
C#已有10多年历史,单从微软2年一版的更新进度来看活力异常旺盛,C#中的异步编程也经历了多个版本的演化,从今天起着手写一个系列博文,记录一下C#中的异步编程的发展历程.广告一下:喜欢我文章的朋友,请 ...
- 一起来学linux:shell script(一)关于变量
p { margin-bottom: 0.25cm; line-height: 120% } (一)首先来看什么是变量,在shell中打印出变量采用的是echo $path或者echo ${path} ...
- 初学者入门web前端:C#基础知识:函数
入行前端对函数的掌握程度有可能直接影响以后工作的效率,使用函数可以高效的编写编码,节省时间,所以我整理了C#中最基础的函数知识点,虽然我在学习中 遇到很多问题,但是只要能够解决这些问题,都是好的. 一 ...
- (复杂值vs原始值)&&内存空间 — 准确我们的JavaScript世界观(一):
写在前面 最近在读<JavaScript启示录>,这本书不是JavaScript的详尽的参考指南,但是把对象作为了解JavaScript的透镜,受益匪浅. 那么我们先来聊一下JavaScr ...
- NFA的实现
此次发表的是一个不确定的自动机(NFA),它可以根据输入的正规式输出由函数映像表示的结果. 此版本可以输入括号'(',')',但是,实现的过程理解起来有点吃力,所以,在时间允许的情况下,我还将写新文章 ...
- linux下文件和目录
(1)普通文件(regular file):这是最常用的文件类型,这种文件包含了某种形式的数据,文件内容的解释由处理该文件的应用程序进行. (2)目录文件(directory file):这种文件包含 ...
- 即时作图新工具—ProcessOn【推荐】…
www.processon.com 推荐这个在线作图网站:免费登录,云端存储,面向对象,最重要的是提供了丰富模板! 在线软件的人气会越来越高,这是趋势啊~
- 【Java线程】Java内存模型总结
学习资料:http://www.infoq.com/cn/articles/Java-memory-model-1 Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态, ...
- 转:【Java集合源码剖析】Hashtable源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/36191279 Hashtable简介 Hashtable同样是基于哈希表实现的,同样每个元 ...
- 软件工程(GZSD2015)第三次作业
时间: 2015/4/17-2015/4/23 基本要求: 在之前编写的四则运算程序基础之上做如下改进: 请参照教材Page57:4.2-4.3节中内容,修改原程序,使之符合 "代码风格和设 ...