导航:首页 > 数据处理 > 数据段的段头里面有什么

数据段的段头里面有什么

发布时间:2023-01-17 13:11:49

㈠ 在分组交换中数据包的头部和尾部分别存储什么信息

IPv4和IPv6类似,都只管包头,除了包头就是数据部分了。
IP包头字段说明
版本:4位,指定IP协议的版本号。
包头长度(IHL):4位,IP协议包头的长度,指明IPv4协议包头长度的字节数包含多少个32位。由于IPv4的包头可能包含可变数量的可选项,所以这个字段可以用来确定IPv4数据报中数据部分的偏移位置。IPv4包头的最小长度是20个字节,因此IHL这个字段的最小值用十进制表示就是5 (5x4 = 20字节)。就是说,它表示的是包头的总字节数是4字节的倍数。
服务类型:定义IP协议包的处理方法,它包含如下子字段
过程字段:3位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)~ 7(网络控制)
延迟字段:1位,取值:0(正常)、1(期待低的延迟)
流量字段:1位,取值:0(正常)、1(期待高的流量)
可靠性字段:1位,取值:0(正常)、1(期待高的可靠性)
成本字段:1位,取值:0(正常)、1(期待最小成本)
未使用:1位
长度:IP包的总长
标识:唯一地标识主机所发送的一个数据段,通常每发送一个数据段后加一。但IP包被分割后,分割得到的IP包拥有相同的标识
标志:是一个3位的控制字段,包含:
保留位:1位
不分段位:1位,取值:0(允许数据报分段)、1(数据报不能分段)
更多段位:1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)
段偏移量:当数据段被分割时,它和更多段位(MF, More fragments)进行连接,帮助目的主机将分段的包组合。
TTL:表示数据包在网络上生存多久,每通过一个路由器该值减一,为0时将被路由器丢弃。
协议:8位,这个字段定义了IP数据报的数据部分使用的协议类型。常用的协议及其十进制数值包括ICMP(1)、TCP(6)、UDP(17)。
校验和:16位,是IPv4数据报包头的校验和。
源IP地址:
目的IP地址:

㈡ 数据段的 TCP 报头中为什么包含端口号

TCP(Transmission Control Protocol)传输控制协议
TCp协议位于第四层。其代表的含义是传输控制协议(Transmission Control protocol)。TCP 在端点间建立连接或虚拟电路进行可靠通信。当一个数据包被封装之后,第三层当然有个Ip协议头,紧接着就是这个TCp协议头。TCp协议头成为了Ip协议头中的“数据”。就像其它协议都有自己的术语一样,TCp协议也有自己的专门术语,如以太网帧、Ip数据报和现在的TCp段等。你可以把它们都当作数据包。但是,当它们之间在进行通讯的时候,一定要使用正确的术语。由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用 TCP 的“端口号”完成的。网络 IP 地址和端口号结合成为唯一的标识 , 我们称之为“套接字”或“端点”。

TCp协议是一种端对端的协议。使用TCp没有任何广播或类似的概念。TCP 通过面向连接的、端到端的可靠数据报发送来保证可靠性。TCP 在字节上加上一个递进的确认序列号来告诉接收者发送者期望收到的下一个字节。如果在规定时间内,没有收到关于这个包的确认响应,重新发送此包。TCP 的可靠机制允许设备处理丢失、延时、重复及读错的包。超时机制允许设备监测丢失包并请求重发。
要用TCp协议与另一台计算机通信,两台机之间必须像打电话一样连接在一起,每一端都都为通话做好准备。“流传输”(Stream delivery)是谈到TCp时的另一个常用词语。这个短语的含义是TCp协议主要用来处理数据流,可以正确处理乱序的数据包。TCp协议甚至还允许存在丢失的或者损坏的数据包,最终它可以再次得到这些数据包。你很可能听一位程序员在谈论“流”的概念。他指的是这样一个事实:数据到底是在什么时候发送的是很难说清楚的,你也可以在TCp流中发送非结构化数据。TCp协议以它自己的方式缓存数据。不过,其缓存过程对程序员和用户是透明的。 关于流数据传输 ,TCP 交付一个由序列号定义的无结构的字节流。 这个服务对应用程序有利,因为在送出到 TCP 之前应用程序不需要将数据划分成块, TCP 可以将字节整合成字段,然后传给 IP 进行发送。

TCp协议每发送一个数据包将会收到一个确认信息。这种发送/应答模式是提供可靠的协议的唯一方法:你必须让对方知道你否收到了数据。当然,这也会造成一些性能损失,而人们需要改善系统效率不高的状况。所以引入了“捎带确认(piggybacking ACKs)”的方法。TCp协议之所以是全双工的就是因为这个“捎带确认”信息,因为它允许双方同时发送数据。这是通过在当前的数据包中携带以前收到的数据的确认信息方式实现的。从提高网络利用率的角度看,这比单纯发送一个通知对方“信息已收到”的数据包要好得多。最后,还有一个批量确认的概念:也即一次确认一个以上的数据包,表示“我收到了包括这个数据包在内的全部数据包”。

在Ip协议中,我们处理的单个数据包是一个更大的数据报的一部分。请记住,一个TCp段就是一个单个的TCp数据包。TCp是一个数据流,因此,除了“连接”之外,没有任何需要真正担心的其它概念。最大报文段长度(MSS)是在连接的时候协商的,但是,它总是在不断地改变。默认的最大报文段长度是536字节,这是576字节(Ip协议保证的最小数据包长度)减去用于Ip头的20个字节和用于TCp头的20个字节以后的长度。TCp协议要设法避免在Ip级别上的分段。因此,TCp协议总是从536字节开始的。

TCp协议最有魅力的功能仍然保留着。这就是滑动窗口协议。这个窗口实际上是已经发出的“没有签收确认的”数据总数。这个窗口可以根据意愿放大和缩小。这是很有趣的。下一讲将介绍这方面的内容。

一个TCp数据包的头是20个字节,就像一个Ip数据包一样。如果使用一些选项,Ip和TCp数据包头都可以放大。TCp头不包含Ip地址,它仅需要知道要连接哪一个端口。不过,你不要被这弄晕了。TCp工作时要一直跟踪状态表中的端对端的连接。这个状态表包含Ip地址和端口。这就是说,只是TCp头不需要Ip信息,因为它来自于Ip头。

把一个数据包设想为一个字节跟着一个字节的数据流是很容易的。很多人都想要一个显示TCp头的表格。但是,这常会把事情搞乱。TCp头从第一位开始依次是下面这些内容:

�6�1源端口,16位:用于这次连接的本地TCp端口。

�6�1目的地端口,16位:通讯目标机器的TCp端口。

�6�1序列号,32位:用来跟踪数据包顺序的号码。

�6�1确认编号,32位:我们确认的以前收到的序列号。

�6�1头长度,4位:报头中的32位字(words)的数量。如果不使用选项,这个值设定为5。

�6�1保留,6位:为将来的使用保留的字节。

�6�1标记,一共6位:每一个标记一个字节(开或者关)

-URG:紧急字段指针。

-ACK:本数据包是(或者包含)一个确认信息。

-pSH:推送功能(没有使用)。

-RST:重置,或者中断本次连接。

-SYN:同步数据包,也就是开始连接。

-FIN:最后一个数据包,开始挂断序列。

�6�1窗口尺寸,16位:从接收方将收到的确认字段开始。

�6�1校验和,16位:TCp头和数据的校验和。

�6�1应急指针,16位:指向跟在URG数据后面的数据的序列号的偏移值。

�6�1选项:MSS、窗口比例等等。我们在关于TCp协议的下一讲中将重点介绍这个部分。

TCp连接的两端使用两对Ip地址和端口识别这个连接,并且向监听这个端口的应用程序发送数据。

㈢ 急急急!!!汇编语言里面,代码段里面存储的是什么

代码段里面存储的确实是指令
但是要告诉你的是,无论数据段,代码段还是什么段,用的都是同一个存储空间,这个存储空间由基址和偏移地址确定位置,每个位置存储一个字节,也就是2位16进制数。机器会给代码段一个对应的首位置,然后你写的代码都会转成2位16进制数存入其中。
比如说我有1到50的存储空间,也就是50个字节,你的数据段对应首址是5,那么你在数据段中定义的数据会挨个存在5,6,7....中。如果你的代码段对应首址是30,那么你在代码段中写的一句指令“mov ax,bx”会转成16进制码(具体是什么我就不知道了,我曾经试过,好像没有十分准确的对应关系)存到30,31,32...的存储空间中。
不知道这样说你名不明白

㈣ 汇编程序段中数据段的定义

DATASEGMENT
STR1DB'whatisyourname?',13,10,'$'
CNEQU$-STR1
STR2EQUSTR1+CN-5
DATAENDS

CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVDX,OFFSETSTR1
MOVAH,9
INT21H
MOVSI,OFFSETSTR1
MOVDI,OFFSETSTR2
MOVCX,CN
ADDSI,CN-1
ADDDI,CN-1
STD
REPMOVSB
MOVDX,OFFSETSTR2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART


教材中有详细的介绍,请认真阅读,多复习。
es是附加数据段段地址,程序中是将数据段和附加数据段同段。
str1是21个字节。
cn和str2在这里都是常量。
数据段中只定义了存储区str1。(但又将str2当存储区使用,这种用法少见,不要学!)

============================================================
以上操作的问题,str2并未申请缓冲区,在执行时有越界的风险!
============================================================
以下是规范的程序:
DATASEGMENT
STR1DB'whatisyourname?',13,10,'$'
CNEQU$-STR1
STR2DBCNDUP(?)
DATAENDS

CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
LEADX,STR1
MOVAH,9
INT21H
LEASI,STR1
LEADI,STR2
MOVCX,CN
ADDSI,CN-1
ADDDI,CN-1
STD
REPMOVSB
LEADX,STR2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART

㈤ 汇编语言程序里面各段存放的是什么啊

栈段用于设置用户栈;数据段用于存放数据;附加数据段也用于存放数据;码段用于存放可执行的代码。
这些段并不是绝对的,它是为了规范汇编语言编程所作的约定。其实,这四个段可以在一起的,比如com类型的可执行文件就是这样。

数据库中常用的段有哪几种,分别起什么作用

数据库中常用的段有数据段、索引段、临时段和回退段四类,分别起以下作用:

1、数据段用来存储表或簇的数据。

2、索引段用来存放索引信息,包括ROWID和索引键值。

3、临时段用来保存SQL语句在解释和执行过程中所产生的临时数据。

4、回退段用于保存数据修改之前的信息,包括数据修改前的值及其位置,即记录数据库中所有事务修改之前信息的段。

数据库的概念实际包括两层意思:

(1)数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。

(2)数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。

㈦ 简述 8086 指令系统中可以包含哪些段,简述每个段的作用

如果只是编计算机软件只要掌握C语言就够了
要是用于编写单片机片内程序 就要掌握硬件原理以及接口
基本和用汇编差不多 只是语言格式上的区别

汇编语言其实仍然是机器语言,虽然看起来是英文,但实际上汇编语言中差不多每一句指令都单独对应一句机器语言指令,这就好比汉字的"一"对应阿拉伯数字"1"一样,只有一少部分是经过变化的.
就是因为绝大多数汇编语言指令都与机器语言指令一一映射,所以通常说"汇编语言能直接对电脑硬件操作"(这总要比说"C++可以直接对硬件进行操作"要正确得多吧?)
除了机器语言之外的任何一种语言都需要编译程序,汇编语言的编译器非常小(例如masm的编译器只有几十到几百K).具体这些编译程序是用什么语言写成的,鄙人也不知道...

㈧ 汇编语言中,代码段,数据段,附加段的定义是什么其中数据是如何组织的请高手回答~谢谢~

运用ASSUME指令使源程序中的段与段寄存器发生联系,
代码段,数据段,分别存入程序和数据
堆栈段是一块空白的空间用来为堆栈操作作准备
附加段是对数据段的补充
数据 有字节DB,字DW,双字DD,长字DQ和十字节变量DT
也可定义一段空白的空间,

DATA1 DB 03H,02H
DATA2 BW 100 DUP(?) //空白

大体就是这样

㈨ 汇编语言中数据段和代码段分别什么意思干什么用的用什么字符表示。

代码段就是放代码的地方,数据段就是放数据的地方。

当然这只是个模糊的标准,在8086下是可以在代码段放数据的,但在windows保护模式下就不行了,如果在代码区定义数据的话,这个数据在默认情况下是不可读和不可写的。

在8086下,所谓段对应的是段寄存器,每个段在某一时刻都可能有一个段寄存器与之对应,比如CS对应代码段,DS对应数据段。

(9)数据段的段头里面有什么扩展阅读:

机器语言:

计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,所以计算机传递的数据是由“0” 和“1”组成的二进制数,所以说二进制的语言是计算机语言的本质。

计算机发明之初,人们为了去控制计算机完成自己的任务或者项目,只能去编写“0”、“ 1”这样的二进制数字串去控制电脑,其实就是控制计算机硬件的高低电平或通路开路,这种语言就是机器语言。直观上看,机器语言十分晦涩难懂。

㈩ 数据段data segment 堆栈段stack segment 代码段code segment的 段地址 有什么关系

对于8086PC机,在编程时,可以根据需要,将一组内存单元定义为一个段。我们可以将一组长度为N(N less or equal to 64KB)、地址连续、起始地址为16的倍数的内存单元作专门存储数据的内在空间,从而定义了一个数据段。比如用123B0H -- 123B9H这段内存空间来存放数据,我们就可以认为,123B0H -- 123B9H这段内存是一个数据段,它的段地址为123B0H,长度为10个字节。
如何访问数据段中的数据呢? 将一段内存当作数据段,是我们在编程时的一种安排,可以在具体操作的时候,用DS存放数据段的地址,再根据需要,用相关指令访问数据段中的具体单元。
比如,将123B0H -- 123B9H 的内存单元定义为数据段。现在要累加这个数据段中的前3个单元的数据,代码如下.
mov ax, 123BH
mov ds, ax ; 将123BH送入ds中,作为数据段的段地址
mov al, 0 ; 用al 存放累加结果
add al, [0] ; 将数据段第一个单元(偏移地址为0)中的数值加到al中
add al ,[1] ; 将数据段第二个单元(偏移地址为1)中的数值加到al中
add al, [2] ; 将数据段第三个单元(偏移地址为2)中的数值加到al中。

栈 : 栈是一种具有特殊访问方式的存储空间。它的特殊性在于,最后进入这个空间的数据,最先出去。
8086 CPU 提供相关的指令来以栈的方式访问内存空间,这意味着,在基于8086 编程的时候,可以将一段内存当作栈来使用。
8086 CPU 提供入栈和出栈指令,最基本的两个是 PUSH(入栈) 和 POP (出栈)。 比如 ,push ax 表示将寄存器ax 中的数据送入栈中,pop ax 表示从栈顶取出数据送入ax. 8086 CPU 的入栈和出栈操作都是以字为单位进行的。
下面举例说明,我们可以将 10000H -- 1000FH 这段内存当作栈来使用。
mov ax, 0123H
push ax
mov bx, 226H
push bx
mov cx, 1122H
push cx
pop ax
pop bx
pop cx
这里有两个问题。
其一, 我们将10000H - - 1000FH 这段内存当作栈来使用,CPU执行push 和 pop 指令时,将对这段空间按照栈的后进先出的规则进行访问。但是,一个重要的问题是,CPU如何知道 10000H -- 1000FH 这段空间被当作栈使用?
其二, push ax 等入栈指令执行时,要将寄存器中的内容放放当前栈顶单元的上方,成为新的栈顶元素;pop ax 等指令执行,要从栈顶单元取出数据,送入寄存器中。显然 push, pop 在执行的时候,必须知道哪个单元是栈顶单元,可是,如何知道呢?
8086 CPU 中,有两个寄存器,段寄存器 SS 和寄存器 SP,栈顶的段地址存在SS中,偏移地址存放在SP中,任意时刻,SS:SP指向栈顶元素。 push 指令和pop指令执行时,CPU从SS和SP中得到栈顶的址址。
现在, 我们可以完整的描述 push 和 pop 指令的功能了,例如 push ax.
push ax 的执行, 由以下两步完成。
1. SP = SP -2, SS:SP 指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶;
2. 将ax 中的内容送入SS:SP指向的内存单元处,SS:SP此时指向新栈顶。

在masm中有一条重要的伪指令 assume ,下面给出 ASSUME 的具体用法
Setting the ASSUME Directive for Segment Registers
Many of the assebler instructions assume a default segment. For example,
JMP assumes the segment associated with the CS register, PUSH and POP assume
the segment associated with the SS register, and MOV instructions assumes the segments
associated with the DS register.

When the assebler needs to reference an address, it must know what segment contains the address. It finds this by using the default segment of group addresses assigned with the
ASSUME directive. The syntax is :
ASSUME segresister : seglocation [, segregister : seglocation ]
ASSUME dataregister; qualifiedtype [, dataregister : qualifiedtype]
ASSUME [regiser: ] NOTHING [, register : NOTHING]
ASSUME register : FLAT [, register : FLAT ]
The ASSUME directive can define a segment for each of the segment registers. the
segregister can be CS, DS, ES, or SS ( and FS and GS on the 80386/486).
段寻址伪指令 ASSUME
格式 : ASSUME [段寄存器]: [ 段名], [段寄存器]: [段名],...
功能 : 用于告知汇编程序,段寄存器CS、DS 、ES 和SS 的内容将被设定为那些段或组的段址。 所以 代码段,数据段,堆栈段的 地址是 可 以人为设置的。

在机器刚开机时,堆栈是还没有建立起来的,此时是不能用栈的。

阅读全文

与数据段的段头里面有什么相关的资料

热点内容
个人信息泄露被判刑的有哪些 浏览:179
义乌狗市场狗多少一只 浏览:650
如何解除移动数据限流的方法 浏览:174
郴州市活禽交易市场什么时候休市 浏览:456
四川空间信息产业发展怎么样 浏览:284
宏基笔记本怎么样关闭程序 浏览:522
邯郸有哪些铁板市场 浏览:850
问道如何查询账号信息 浏览:323
工商银行交易4204是什么意思 浏览:454
食品产品标准号怎么解读 浏览:536
我爱我家链家为什么退出北京市场 浏览:648
男生如何缩小脸部毛孔产品 浏览:199
数据线方头卡扣怎么卸 浏览:668
宫颈代理怎么做 浏览:815
想做食品代理商怎么样 浏览:366
农资加盟店需多少钱代理商 浏览:492
信息验证码如何设置 浏览:296
设计时必要准备的数据有哪些 浏览:886
采取的程序是有什么优势 浏览:116
伪中币交易网站有哪些 浏览:870