- 一、OSI模型
- 二、IP模型
- 三、数据进入协议栈的封装
- 四、IP协议特点
- 五、Ip header格式
- OSI七层模型:开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架
- OSI模型总结:采用分层的思想,这是比较好的优点;但是模型过于复杂了
- Application:应用层
- Transport:传输方式(TCP\UDP)
- Internet:IP层
- Link:网线
- 实例理解IP模型的数据传递
- ①.A应用需要将数据传输给B
- ②.A首先将数据进行打包
- ③.然后A选择Transport的方式TCP/UDP(假设有空运和海运的方式选择)
- ④.之后将运输的东西放到Internet(假设是邮局或快递集中点)
- ⑤.最后快递员通过Link(相当于交通工具:汽车、电动车等)
- 需求假设:有一个应用程序,产生的一部分数据,想采用UDP的方式发送
- ①.Data进过Transport层,添加了UDP header
- ②.进过Internet层,添加了IP header
- ③.在Link层会增加Frame header(包头)和Frame footer(包尾)
- Frame footer的作用
- Link的Frame footer一般是CRC检查
- 发送方根据Frame data计算出校验值保存到Frame footer中
- 接收方根据Frame footer中的检验值来判断Frame data是否正确
- Frame data的长度要求:
- 一般来说最小46字节,不足填0补充
- 一般来说以太网的传输要求最大不超过1500字节(当传输的字节大于1500字节的时候,在IP层就要进行分片,就是将数据报分成若干个片,每个片重新在Link上打包)
- MTU概念:MTU是Maximum Transmission Unit的缩写,意思是网络上传送的最大数据包;MTU的单位是字节,大部分网络设备的MTU都是1500
- 不可靠(unreliable):不能保证IP数据包能够成功的到达目的地
- 无连接(connectionlesss):IP协议不维护任何数据传输后续的状态,通俗的讲就是每个数据包发送和处理都是相互独立的;举例说明 —— 发送方先发送A数据包,再发送B数据包,但是接收方有可能先收到B数据包,然后才收到A数据包
- Big Endian:网络数据都是按照Big Endian来传送的
- C语言实现检测当前机器是大端模式还是小端模式
// 一个32位四字节的整数值,例如1,实际的计算机编码表示是 0x00000001
// 小端系统中在内存中的表示是 01 00 00 00
// 大端系统中在内存中的表示是 00 00 00 01
union EndianTest()
{
int8_t u[4];
int32_t i;
};
static bool isLittleEndianSystem()
{
EndianTest et;
et.i = 1;
return et.u[0] == 1;//u的第1个字节是不是等于1
}
// *** 作系统方法判断
static bool isLittleEndianOs(){
return __BYTE_ORDER == __LITTLE_ENDIAN;
}
- 一个IP数据的组成:首部和数据
- 首部的前一部分是固定长度,共20字节,是所有IP数据包必须具有的
- 在首部的固定部分的后面是一些可选字段,其长度是可变的
- 4位版本:指 IP 协议的版本。目前 IP 协议版本号有IPv4和IPv6
- 生存时间:占8位,记为TTL(Time To Live),指示数据报在网络中可通过的路由器数的最大值。每经过一个路由器,TTL值就-1,如果等于0了,就直接将这个数据报抛弃。一般值为256或者128
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)