IP协议和网络传输中的封装与分用。
关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html
因为四层模型用的比较多,这里只拿四层模型来分析。

1、四层模型中的最下层是链路层,传输的是以太网数据帧。主要有三种格式的以太网数据帧。这里暂时不做详细分析
2、IP数据报格式

1)版本:IP协议版本号,IPv4版本这个值为4。IPv6这个值为6
2)头长度:表示头部的长度,单位是4字节。比如这个数为5,表示IP头部长度为20个字节。所以我们也可以知道IP长度最大为4x15 = 60个字节。
3)服务类型(TOS):包含3位优先权(现已忽略)、4位的服务类型子字段、1位保留位(必须位0)。

4)总长度:16位。以字节位单位,包含头部和数据部分总长度。最大可为65535个字节
5)封包标识:用来标识一个IP包,每发送一个此值会加1。
6)标志与片偏移:
标志:3位的标志第一位不使用。第二位DF(Do not Fragment)为1表示不分片。若超过最大传输单元则会被丢弃,并发送一个ICMP差错报文。第三为MF(More Fragment)为1表示后面还有包。最后一片的MF为0.
片偏移:IP分片后每一个分组都有自己的首部。但是片偏移不同.,通过片偏移接收端可以重新组装IP包。
7)存活时间(TTL):Time to live。 表示数据报最多可经过的路由器的数量。数据报每经过一个路由器TTL会减一,直到为0就会被丢弃,并发送ICMP报文通知源主机。这样可以防止数据包一直在网络中传输下去。
8)协议:表示IP层承载的是哪个高级协议。在封装与分用过程中,协议栈知道该交由哪个层的协议处理。下面是对应值:
1-ICMP,2-IIGMP,6-TCP,7-UDP
9)校验和:保证数据头部的完整性,但是不校验数据部分。校验方法是网际校验和
因为上层的协议都有自己的校验和,这里不需要重复校验
还有就是每经过一个路由器头部都会发生变化,但是数据部分不变。
只校验头部比较省时间。
10)源IP地址:发送数据的主机IP地址
11)目的IP地址:接受数据的IP地址
12)选项与填充(选项为4字节整数倍,不足则用0填充):
内容有:
a:安全和处理限制
b:路径记录:记录所经历路由器的IP地址和时间
c:宽松源站路由:指数据报文必须经历的IP地址,可以经过没有指定的IP地址
d:严格的源站路由:指定数据报文必须经过的IP地址,不能经过没有指定的IP地址
3、封装与分用
假设主机A发送数据给主机B,一般流程是这样:A应用层数据-》A的传输层-》A的网络层-》A的链路层 -》 网络上找到B,并发送给B的链路层 -》 B的网络层 -》 B的传输层 -》 B的应用层。就是下面这幅图:

封装(Encapsulation):从上到下。将数据打上一定的头部。
应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,直到最后到物理层数据转换成比特流,送入网络。在这个过程中,每一层都会对要发送的数据加一些首部信息。
分用(解封(Demultiplexing)):从下到上,将数据头部进行拆开
从下网上时再逐一将对应层的头部去掉,一层一层剥离。直到应用层。

分用就是刚好反过来。
还有一些更好的图可以参考:
https://www.cnblogs.com/starof/p/6367020.html
https://www.cnblogs.com/qishui/p/5437301.html
IP协议和网络传输中的封装与分用。的更多相关文章
- 计算机网络通信TCP/IP协议浅析 网络发展简介(二)
本文对计算机网络通信的原理进行简单的介绍 首先从网络协议分层的概念进行介绍,然后对TCP.IP协议族进行了概念讲解,然后对操作系统关于通信抽象模型进行了简单介绍,最后简单描述了socket 分层的 ...
- [转载]详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
[转载]详解网络传输中的三张表,MAC地址表.ARP缓存表以及路由表 虽然学过了计算机网络,但是这部分还是有点乱.正好在网上看到了一篇文章,讲的很透彻,转载过来康康. 本文出自 "邓奇的Bl ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完毕測试代码)
MD5和RSA是网络传输中最经常使用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,仅仅能加密而不能解密. ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- Android网络编程系列 一 TCP/IP协议族之传输层
这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 传输层中有TCP协议与UDP协议. 1.UDP介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,U ...
- TCP/IP协议:最大传输单元MTU 和 最大分节大小MSS
MTU = MSS + TCP Header + IP Header. mtu是网络传输最大报文包. mss是网络传输数据最大值. MTU:maximum transmission unit,最大传输 ...
- 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识
TCP/IP协议:数据链路层,网络层,传输层,应用层. IP地址分为5类:A类.B类.C类.D类.E类. (A类.B类.C类是基本类,D类多用于多播传送,E类为保留类.) "*"表 ...
- 网络传输中的各种加密算法+SSL+CA证书详解
1. 数据传输分类 在互联网上数据传输有两种:明文传输和加密传输.明文传输的协议有:ftp.http.smtp.telnet.但是为了数据的完整性和安全性,所以后来引用了加密等相关手段来保证数据的安全 ...
随机推荐
- Bridging signals(NlogN最长上升子序列)
Bridging signals Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Color the Ball(懵逼题)
Color the Ball Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- 最长上升子序列(logN算法)
例如:1 7 3 5 9 4 8 一个序列,比如说a[]={1,7,3,5,9,4,8},找出它的最长上升子序列的个数,很明显是4个,可以是{1,3,5,9},{1,3,5,8}或者{1,3,4,8} ...
- 使用Node.js+Socket.IO搭建WebSocket实时应用【转载】
原文:http://www.jianshu.com/p/d9b1273a93fd Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新 ...
- MD5加密(前端JS)
var password = $('#password').val();//获取密码框的值 var passwordMD5 = md5(password);//调用MD5,传入密码,返回MD5加密后的 ...
- 通讯框架 T-io 学习——给初学者的Demo:ShowCase设计分析
前言 最近闲暇时间研究Springboot,正好需要用到即时通讯部分了,虽然springboot 有websocket,但是我还是看中了 t-io框架.看了部分源代码和示例,先把helloworld敲 ...
- python添加自定义cookies
import cookielib,urllib2 class AddCookieHandler(urllib2.BaseHandler): def __init__(self,cookieValue) ...
- Cordova cannot add Android failed with exit code ENOENT
这可能是系统环境变量损坏了 解决方案:在系统变量path如果没用下面的变量就加上%SystemRoot%\system32; %SystemRoot%; %SystemRoot%\System32\W ...
- 全排列Permutations
描述 Given a collection of numbers, return all possible permutations.For example,[1,2,3] have the foll ...
- 使用GetThumbnailImage进行图片缩放操作
/// <summary> /// 获取等比例缩放图片的方法 /// </summary> /// <param name=&q ...