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 ...
随机推荐
- 启动tomcat错误:Address already in use: JVM_Bind:8081
解决方法: 1.打开任务管理器,关闭掉javaw进程. 2.修改tomcat端口:tomcat/conf/server.xml
- Cognos 11.0快速开发指南 Ⅱ
1. 创建报表 在创建好数据源之后,我们就可以创建报表了,报表的开发是浏览器中完成的,这里我选用了chrome浏览器,在地址栏输入:http://localhost:80/ibmcognos ( ...
- adb 安装apk 报错:Failure [INSTALL_FAILED_ALREADY_EXISTS]
遇到INSTALL_FAILED_ALREADY_EXISTS问题,直接通过adb install -r xxx.apk命令安装apk即可
- mysql互换表中两列数据
在开发过程中,有时由于业务等需要把一个表中的两列数据进行交换. 解决方案 使用update命令,这完全得益于MySQL SQL命令功能的强大支持. 表格中原来数据类似如下: select * from ...
- geotrellis使用(三十二)大量GeoTiff文件实时进行TMS服务
前言 在上一篇文章中我讲了如何直接将Geotiff文件发布为TMS服务,在其中只讲了单幅Geotiff的操作,其实单幅这种量级的数据对Geotrellis来说就是杀鸡焉用牛刀,Geotrellis针对 ...
- Spring Cloud中负载均衡器概览
在上篇文章中(RestTemplate的逆袭之路,从发送请求到负载均衡)我们完整的分析了RestTemplate的工作过程,在分析的过程中,我们遇到过一个ILoadBalancer接口,这个接口中有一 ...
- React——组件
一.创建组件 在React中有两种创建组件的方式,分别是函数形式的组件和类形式的组件 //函数形式: function Welcome(props){ return <p>this is ...
- idea 给maven项目添加依赖(二)
这里接着上一篇来 我们观察目录发现有两个pom.xml(project object module) 项目是里面的,所以外面的先不管它. 点击里面的pom.xml 1.在<url>节点下面 ...
- 自制IPsec_vpn综合实验
实验需求 R1.R2间tunnel建立私网: Vpn网关间配置ipsec实现数据加密: 使用tunnel模式下的ESP包头封装: 使用3des加密算法,md5摘要算法: 设置NAT旁路绕行流量: 利用 ...
- 【深入Java虚拟机】之八:Java垃圾收集机制
转载请注明出处:http://blog.csdn.net/ns_code/article/details/18076173 对象引用 Java中的垃圾回收一般是在Java堆中进行,因为堆中几乎存放了J ...