第0章数据是如何进行一步步的封装的

第一章:mac帧头定义

帧头数据结构的定义:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16一、MAC帧头定义

/*数据帧定义,头14个字节,尾4个字节*/

typedef struct _MAC_FRAME_HEADER

{

char m_cDstMacAddress[6];//目的mac地址  6字节

char m_cSrcMacAddress[6];//源mac地址    6字节

short m_cType;//上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp 占用2字节

}__attribute__((packed))MAC_FRAME_HEADER,*PMAC_FRAME_HEADER;

typedef struct _MAC_FRAME_TAIL

{//占用4字节

unsignedint m_sCheckSum;//数据帧尾校验和,侦校验:FrameCheckSequence:这个字段包括4字节循环冗余校检码(CRC)用于检查错误

}__attribute__((packed))MAC_FRAME_TAIL, *PMAC_FRAME_TAIL;

ip头部定义

车过来看

1.源端口和目的端口字段——各占 2 字节。各包含一个TCP端口编号,分别标识连接两端的两个应用程序。本地的端口编号与IP主机的IP地址(32位)形成一个惟一的套接字。双方的套接字惟一定义了一次连接。

2.序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

3.确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

4.  数据偏移——(占有一个字节)占 4  bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位不是字节而是 32 bit 字   (4 字节为计算单位)。

保留字段——(占有1.5个字节)占 6 bit,保留为今后使用,但目前应置为 0。

紧急比特 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

确认比特 ACK —— 只有当 ACK =1 时确认号字段才有效。当 ACK = 0 时,确认号无效。

推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。

复位比特 RST (ReSeT) —— 当 RST  1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

同步比特 SYN —— 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。

终止比特 FIN (FINal) —— 用来释放一个连接。当FIN  1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口字段 —— 占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

5.

检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。

紧急指针字段 —— ( 占 2 字节)占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。

/*TCP头定义,共20个字节*/

typedef struct _TCP_HEADER

{

//第一行

short m_sSourPort;              // 源端口号16bit

short m_sDestPort;              // 目的端口号16bit//第二行

unsigned int m_uiSequNum;         // 序列号32bit//第三行

unsigned int m_uiAcknowledgeNum;  // 确认号32bit//第四行

short m_sHeaderLenAndFlag;        // 前4位:TCP头长度;中6位:保留;后6位:标志位

short m_sWindowSize;            // 窗口大小16bit

//第五行

short m_sCheckSum;              // 检验和16bit

short m_surgentPointer;           // 紧急数据偏移量16bit

}__attribute__((packed))TCP_HEADER, *PTCP_HEADER;

1

2

3

4

5

6

7

8

9数据结构的定义/*UDP头定义,共8个字节*/

typedef struct _UDP_HEADER

{

unsignedshort m_usSourPort;// 源端口号16bit

unsignedshort m_usDestPort;// 目的端口号16bit

unsignedshort m_usLength;// 数据包长度16bit

unsignedshort m_usCheckSum;// 校验和16bit

}__attribute__((packed))UDP_HEADER, *PUDP_HEADER;

版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。

报头长度(Internet Header Length,IHL)字段:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。

服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。

总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。

标志字段:占16比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。

标志位字段:占3比特。标志一份数据报是否要求分段。

段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。

生存期(TTL:Time to Live)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。

协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。

头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。

源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。

可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。

计算机网络比特是什么,计算机网络相关推荐

  1. 计算机网络基础与信息安全,大学计算机基础计算机网络基础与信息安全计算机网络概述教案.doc...

    试 讲 教 案 试讲教师:魏绪建 课程名称:大学计算机基础 讲授章节:第八章 计算机网络基础与信息安全 第一节 计算机网络概述 教学对象:运动训练专业学生 教学内容:1.计算机网络的形成与发展 2.计 ...

  2. 计算机网络入门指南之计算机网络体系结构

    一.计算机网络入门指南之计算机网络体系结构 1.1 计算机网络体系结构形成的原因: 计算机网络是个复杂的系统,现举一个最简单的计算机网络应用例子:两个连接在网络上的计算机要传送文件,首先要在两个计算机 ...

  3. 计算机网络(一)计算机网络体系

    计算机网络(一)计算机网络体系 一.计算机网络概述 概念 功能 组成 分类 二.体系结构和参考模型 ISO/OSI模型 物理层 网络层 传输层 会话层 表示层 应用层 OSI参考模型与TCP/IP参考 ...

  4. 计算机网络章末总结,计算机网络 (前两章总结)

    协议 协议是指通信双方必须遵循的控制信息交换的规则的集合 协议三要素 :语法 语义 同步 计算机网络体系结构是指计算机网络的分层,每一层应具有的功能以及每一层里所用到的协议的集合 分层: 只有下层的问 ...

  5. 【计算机网络】第一章--计算机网络概述

    本系统教程参考自: 教程:https://blog.csdn.net/weixin_42146136/category_10581354.html 视频:王道计算机考研 计算机网络_哔哩哔哩_bili ...

  6. 【计算机网络学习笔记】计算机网络

    计算机网络学习笔记 第一章 计算机网络概述 1. 计算机网络概述 1.1 计算机网络的概念 1.2 计算机网络的组成 1.3 计算机网络的功能 1.4 计算机网络的分类 1.5 计算机网络的标准化工作 ...

  7. 计算机网络学习1:计算机网络概论

    计算机网络概论 计算机网络的定义 定义 计算机网络(Computer Network)可以定义为由通信信道连接的主机和网络设备的集合. 因特网术语"主机(host)"或称为&quo ...

  8. 计算机网络又称为分时多用户,计算机网络与通讯题库一(教学资料)

    一. 填空题 1.计算机网络源于____和____技术的结合(____技术和____技术的结合产生了计算机网络),始于20世纪年代____. 2.单处理机联机网络涉及到多种____技术.多种数据___ ...

  9. 计算机网络答案清华大学出版社,计算机网络答案(吴功宜版+清华大学出版社)2.ppt...

    <计算机网络答案(吴功宜版+清华大学出版社)2.ppt>由会员分享,可在线阅读,更多相关<计算机网络答案(吴功宜版+清华大学出版社)2.ppt(12页珍藏版)>请在人人文库网上 ...

  10. 【408计算机考研】计算机网络——第1章 计算机网络体系结构

    计算机网络 第1章 计算机网络体系结构 [考纲内容] 1.1 计算机网络概述 1.1.1 计算机网络的概念 1.1.2 计算机网络的组成 1.1.3 计算机网络的功能 1.1.4 计算机网络的分类 * ...

最新文章

  1. @value 注入静态属性_SpringBoot使用@Value读取属性值
  2. Android 中input event的分析
  3. 成员指针运算符 .* 和 -*
  4. 链路追踪在ERP系统中的应用实践
  5. C++ 运算符重载四(自定义数组类)
  6. Android页面引导蒙版(浮层)库
  7. 【jQuery】货币格式化
  8. fpga加载程序慢_FPGA JTAG接口下载速度很慢
  9. groupby后选取列和不选取列的区别
  10. mc服务器语音,浸入式语音(Immersive Voice)|我的世界1.12.2版本
  11. 织梦网站如何上传服务器还原,网站转移教程:织梦系统数据库备份和还原的方法步骤...
  12. 【致远FAQ】致远OA宕机之DEE引发宕机
  13. 冷知识 - 你可能不知道的100个冷知识
  14. 百度oCPC一键联调激活教程?api怎么对接?
  15. 区块链发展第三阶段:去中心化金融
  16. 哪些人工智能企业有内部人才培养项目?
  17. macOS 13 beta7(22A5342f)With OpenCore 0.8.5 and winPE双引导分区原版镜像
  18. 全面解读数字经济内涵 大力推动数字经济发展
  19. Stam的流体solver学习笔记
  20. 我的Android说

热门文章

  1. Tomcat8+redis实现session共享
  2. 20155201 2016-2017-2 《Java程序设计》第五周学习总结
  3. 2、linux系统root用户忘记密码后的重置方式
  4. 如何在SqlServer中获取前端连接的IP地址,计算机名等信息
  5. Redis的高级应用-安全性和主从复制
  6. scrollView截取指定区域的图片
  7. 709. To Lower Case
  8. Android OpenGL加入光照和材料属性
  9. Linux paste命令
  10. 前端那些事之日历多选插件篇