導航:首頁 > 數據處理 > 數據段的段頭裡面有什麼

數據段的段頭裡面有什麼

發布時間: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 的內容將被設定為那些段或組的段址。 所以 代碼段,數據段,堆棧段的 地址是 可 以人為設置的。

在機器剛開機時,堆棧是還沒有建立起來的,此時是不能用棧的。

閱讀全文

與數據段的段頭裡面有什麼相關的資料

熱點內容
信息技術ps題是怎麼給分的 瀏覽:563
本科研究論文數據一般為多少 瀏覽:269
excel替換後的數據怎麼作圖 瀏覽:623
市場經濟制度監督什麼作用 瀏覽:553
管家婆軟體怎麼在代理品牌加貨 瀏覽:853
模切技術後期工資怎麼樣 瀏覽:116
花唄如何支付交易費用 瀏覽:478
安幕茵代理公司怎麼樣 瀏覽:414
銀行系統交易碼四位數是什麼意思 瀏覽:712
什麼技術能帶回家 瀏覽:520
專利中多個技術點什麼意思 瀏覽:314
寬頻數據掉了怎麼修 瀏覽:620
貴港水果批發市場在哪裡 瀏覽:614
氣溫高溫差大是可以養什麼水產品 瀏覽:802
正大飼料黑河代理是哪裡 瀏覽:642
excel如何輸入規律數據 瀏覽:961
如何落實產品一致性檢查 瀏覽:987
民房交易在什麼地方辦理 瀏覽:368
程序後面加點什麼意思 瀏覽:347
小程序每日交作業怎麼批改 瀏覽:100