mysql protocal 2 響應報文

2021-07-25 12:27:47 字數 4134 閱讀 7608

當客戶端發起認證請求或命令請求後,伺服器會返回相應的執行結果給客戶端。客戶端在收到響應報文後,需要首先檢查第1個位元組的值,來區分響應報文的型別。

響應報文型別

第1個位元組取值範圍

ok 響應報文

0x00

error 響應報文

0xff

eof 報文

0xfe

result set 報文

0x01 - 0xfa

field 報文

0x01 - 0xfa

row data 報文

0x01 - 0xfa

ok響應報文是對下面命令的響應:

這一型別的包適用於不要求返回結果集的命令。

1.1.1 響應包(除去包頭 packet header4個位元組)格式:

位元組數量說明1

ok報文,值恒為0x00

int < lenenc>

長度編碼(length encoded)的整形值,1-9個位元組; affected rows 影響行數

int < lenenc>

last_insert_id

int <2>

status flags

int<2>

number of warnings

1.1.2 舉例譬如,請求命令(客戶端->伺服器):

use test ;//切換資料庫,對應命令型別為 com_init_db

01:18:48

.909981

ip(tos

0x8,

ttl64,id

56656

,offset0,

flags[df

],proto

tcp(6)

,length61,

badcksum0(

->5f60)!)

localhost

.52284 > localhost

.mysql:

flags[p

.],cksum

0xfe31

(incorrect

-> 0x3146)

,seq

350:359

,ack

3667

,win

12623

,options

[nop

,nop,ts

val1034407982

ecr1034407982],

length

90x0000:

4508

003d

dd50

4000

4006

0000

7f00

0001e.

.=.p@

.@..

....

.0x0010:

7f00

0001

cc3c

0cea

00a0

a735

2265

761f..

...<...

..5"ev

.0x0020:

8018

314f

fe31

0000

0101

080a

3da7

d02e..

1o.1.

....

.=..

.0x0030:

3da7

d02e

0500

0000

0274

657374=

....

....

test^^-

----

02標示com_init_db命令型別^^-

----

-00標示sequence

id是0

^^^^^^-

----

0x05

0000標示mysql

packet

payload長度是5

^^^^

^^^^^^-

----

----

5個位元組的payload

response ip報文

01:

18:48.910082

ip (tos

0x0, ttl

64, id

40877

, offset

0, flags [df], proto tcp (

6), length

63, bad cksum

0(->

9d09)!)

localhost.mysql > localhost

.52284

: flags [p.], cksum

0xfe33

(incorrect ->

0x0aac

), seq

3667

:3678

, ack

359, win

12739

, options [nop,nop,ts val

1034407982

ecr

1034407982

], length

110x0000

: 4500

003f

9fad

4000

4006

0000

7f00

0001

e..?..@.@.......

0x0010

: 7

f00

0001

0cea cc3c

2265

761f

00a0 a73e .......<"ev....>

0x0020

: 8018

31c3 fe33

0000

0101

080a

3da7 d02e ..1.

.3......=...

0x0030

: 3

da7 d02e

0700

0001

0000

0002

0000

00=..............

^^ ^^

2個位元組的warning numbers, 此處

0warning

^^ ^

^2個位元組status flag,

0x02

00,標示autocommit = on

^^last

inserted id插入自增序列值,此處標示無

^^-----affected

rows =

0x00,0

行受影響

^^------

ok報文第乙個位元組是

0x00

^^----

sequence id,響應報文的seq id通常從1開始

^^^^ ^

^-----------0x07

0000

標示payload length =

7

ref:

result set報文比較複雜。上面講的ok/error/eof報文只有乙個packet。而 result set報文是由多個packet按照特定順序組合而成。

com_query_response: 按照型別可以分為4種

a err_packet

a ok_packet

a protocol::local_infile_request

a protocoltext::resultset

其中,protocoltext::resultset格式定義如下:

if the server_more_results_exists flag is set in the last eof_packet or (if the client_deprecate_eof capability flag is set) ok_packet, another protocoltext::resultset will follow (see multi-resultset).

詳情請見:

舉例:1,

2,

響應報文writeHead

1.http狀態碼 2.內容型別 res.writehead 200,用於建立 伺服器的模組 當使用者端有請求來的時候 req請求物件,包含了請求相關的資訊,獲取請求方式 res.end 結束請求並且為客戶端響應內容 console.log req.method console.log req.ur...

請求 響應報文

通訊雙方如果想要通訊就必須遵循一定的規則,我們把這個規則稱之為http協議!報文 http協議通訊的內容我們稱之為 報文 報文格式 報文首部 空行報文主體 請求報文 請求首部 請求首行和請求頭部 空行請求主體 響應報文 響應首部 空行響應主體 報文分類 請求報文 瀏覽器傳送給伺服器端的內容 get請...

http響應報文詳解

http響應報文由響應行,響應頭,響應體三部分組成。響應行主要包括 響應協議,這個與請求協議對應,比如http,狀態碼200 狀態碼的描述ok 響應頭就是一些常見的響應名對應的響應值 響應引數就是我們真正需要的從資料庫中取出的資料 下面是摘自www.baidu.com和乙個示例 的請求頭 表明伺服器...