浅谈TCP IP协议栈(四)IP协议解析
通过之前的网络层基础知识,IP地址以及路由器的简介,大家应该对于TCP/IP有一个大致的了解,在脑海里应该对于网络的几个基础概念有个大概的了解,简单点说整个协议栈就是在做一件事,规定网络报文(网络传输中的数据报)的发送和接收,而整个协议栈内的协议,也是可以分为之前介绍过的链路层-》网络层-》传输层-》应用层,在这每一层中都有很多不同的协议,但是最常用的协议,每一层就是一到两种,所以想学协议,先从每一层最常见,最常用的开始学起:
- 链路层——以太网、VLAN
- 网络层——IP协议
- 传输层——TCP/UDP协议
- 应用层——HTTP协议
上面的几种协议,如果都能熟练掌握,那基本上就是入门并且偏上的水平了,所以接下来我们就逐一介绍各个协议。
上面就是IP报文的模板,其中IP首部一般为20字节,也就是图中的第1行到第5行,第6行为可选字段,后续的就是报文所携带的数据。我们重点介绍IP首部,可以看到,每一行是4个字节,也就是32位,而对于每一行我们又根据位数分为不同的字段,先来看看每个字段具体的含义:
第一段:
- 4位版本号:取值为4时代表IPV4协议,取值为6时代表IPV6协议
- 4位首部长度:单位是4字节,一般取值为5
- 8位ToS字段:这个字段比较特殊,它相当于是报文的优先级或者是报文的服务类型,用来区分报文的业务类型,对于设备做QoS有着重大的意义。
- 16位总长度:代表这一个IP报文总的长度,后面我们会介绍一个MTU时会介绍该字段。
第二段:
- 16位标示符:用来唯一标记这一份IP报文
第三段:
- 8位生存周期TTL字段:报文的生存周期,报文每经过一次转发,该字段值减1,当减为0时,丢弃该报文。
- 8位协议:代表着这份IP报文承载着何种上层传输协议或者网络协议,常见的取值与对应关系如下:
- ICMP协议
- IGMP协议
- TCP协议
- UDP协议
- IGRP协议
- 16位首部校验和:用于检验收到的报文是否有差错。
第四段:
- 32位源IP地址:发送方IP地址
第五段:
- 32位目的IP地址:接收方IP地址
介绍完IP报文的格式以后,我们再来说一下IP报文的特点,其主要特点有以下几点:
- IP报文具有不可靠性,即不能发送方发送报文后,不保证接收方一定能收到该报文。
- IP报文的不保序性,既然IP报文是不靠靠的,那相应的,它也不保证发送出的报文的顺序性,也许发包顺序是1、2、3,但是收包顺序可能就是3、2、1
- IP报文的分片,若发送报文数据过大,则涉及到报文分片。
综上所述,我们对IP协议有一个大致的了解,之后我们会陆陆续续介绍给多协议的,敬请期待!
浅谈TCP IP协议栈(四)IP协议解析的更多相关文章
- 浅谈TCP IP协议栈(三)路由器简介
读完这个系列的第一篇浅谈TCP/IP协议栈(一)入门知识和第二篇浅谈TCP/IP协议栈(二)IP地址,在第一篇中,可能我对协议栈中这个栈的解释有问题,栈在数据结构中是一种先进后出的常见结构,而在整个T ...
- 浅谈TCP IP协议栈(二)IP地址
上一节大致了解TCP/IP协议栈是个啥东西,依旧是雾里看花的状态,有很多时候学一门新知识时,开头总是很急躁,无从下手,刚学会一点儿,却发现连点皮毛都不算,成就感太低,所以任何时候学习最重要的是要在合适 ...
- 浅谈TCP IP协议栈(一)入门知识【转】
说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...
- 测试那些事儿—浅谈TCP/IP协议
TCP/IP协议是一系列网络协议的总和,是构成网络通信的核心骨架. TCP/IP的工作原理通俗的讲就是一个主机的数据要经过哪些过程才能发送到对方的主机上. TCP/IP协议采用四层结构,分别为应用层, ...
- 浅谈 TCP、IP、DNS 和 HTTP 的关系
一.浅谈三个协议的基本概念 1.IP 协议 按层次分,IP网际协议位于网络层,几乎所有的网络的系统都会用到 IP 协议,其重要性非同一般.IP 协议作用就是把各种数据包传送给对方,对方的地址就要看其 ...
- TCP/IP笔记(四)IP协议
前言 IP相当于OSI参考模型的第3层--网络层:主要作用是"实现终端节点之间的通信"又称"点对点通信". IP作为整个TCP/IP中至关重要的协议,主要负责将 ...
- TCP/IP协议栈 --- 网络层(IP 首部 和分片)
IP 是TCP/IP协议栈中重要的层次, TCP UDP ICMP IGMP都是依赖IP层进行传输的.首先它是一种不可靠,无连接的协议.不可靠:它不保证IP包能正确到达目的地,无连接:表示IP并不会维 ...
- 浅谈Linux下如何修改IP
linux 下命令之浅谈//cd .. //返回上一级//创建文件夹touch test.txt//Linux不区分大小写//往一个文件中追加内容echo "****" > ...
- 浅谈TCP通讯
基于Tcp协议的Socket通讯类似于B/S架构,面向连接,但不同的是服务器端可以向客户端主动推送消息. 使用Tcp协议通讯需要具备以下几个条件: (1).建立一个套接字(Socket) (2).绑定 ...
随机推荐
- 在asp.net web api 2 (ioc autofac) 使用 Serilog 记录日志
Serilog是.net里面非常不错的记录日志的库,另外一个我认为比较好的Log库是NLog. 在我个人的asp.net web api 2 基础框架(Github地址)里,我原来使用的是NLog,但 ...
- performance数据
// 获取 performance 数据 var performance = { // memory 是非标准属性,只在 Chrome 有 // 财富问题:我有多少内存 memory: { usedJ ...
- C#版(击败100.00%的提交) - Leetcode 372. 超级次方 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. Leetcod ...
- C++STL模板库适配器之stack容器
目录 适配器 一丶适配器简介 二丶栈(stack)用法 1.栈的常用方法 适配器 一丶适配器简介 Stl中的适配器,有栈 (stack) 队列 queue 根priority_queue 适配器都是包 ...
- JAVA开发知识之Java的线程
目录 Java多线程讲解 一丶多线程简介 1.进程的概念 2.线程概念 3.Java中多线程Thread类 二丶多线程的创建 1.继承Thread类.重写run方法. 2.实现Runalbe接口. 三 ...
- 解读经典《C#高级编程》第七版 Page94-100.继承.Chapter4
前言 今天,我们开始进入第四章的解读.本章讲的是继承.要做稍微复杂一些的开发,便不可避免的会使用到继承.本篇文章我们主要解读"实现继承". 另外,从本文开始,我开始使用Markdo ...
- 多线程Thread,线程池ThreadPool
首先我们先增加一个公用方法DoSomethingLong(string name),这个方法下面的举例中都有可能用到 #region Private Method /// <summary> ...
- QSS的使用(二)——实现ColorLabel
在上一篇文章中,我们已经了解了QSS的基础使用,现在我们将会看到一个简单的例子来加深对QSS的理解. 需求分析 我们想要在界面中让文本显示出指定的颜色,现在有几种方案: 使用paintEvent手动计 ...
- 【转载】ASP.NET中Server.MapPath方法获取网站根目录总结
在ASP.NET网站应用程序中,可以通过Server.MapPath方法来获取跟服务器有关的目录信息,如获取网站的根目录.获取当前代码文件所在的目录路径.获取当前代码所在路径的上级路径等.Server ...
- 【小o地图Excel插件版】不止能做图表,还能抓58、大众点评网页数据...
小o地图Excel插件版:一款基于Excel软件开发的地图软件,提供基于Excel表格进行地理数据挖掘.地理数据分析.地图绘制.地图图表等功能的工具类软件.具有易用.高效.稳定的特点,能够满足地理数据 ...