當客戶端發起認證請求或命令請求後,伺服器會返回相應的執行結果給客戶端。客戶端在收到響應報文後,需要首先檢查第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和乙個示例 的請求頭 表明伺服器...