国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【PHP7源碼學(xué)習(xí)】2019-04-09 FastCGI協(xié)議1

wh469012917 / 3939人閱讀

摘要:所以,它就會(huì)將端口號(hào)還有一些額外的信息被稱作首部,和應(yīng)用層下發(fā)的數(shù)據(jù)部分進(jìn)行封裝,一起傳給下一層即網(wǎng)絡(luò)層。它們之間的通信,屬于同一機(jī)器上不同端口號(hào)之間的通信。而協(xié)議傳輸?shù)膬H僅是無(wú)意義的字節(jié)流數(shù)據(jù),接收方并不能正確讀取數(shù)據(jù)的含義。

baiyan

全部視頻:https://segmentfault.com/a/11...

計(jì)算機(jī)網(wǎng)絡(luò)架構(gòu)的分層與封裝

我們經(jīng)常談到,計(jì)算機(jī)網(wǎng)絡(luò)有多種體系架構(gòu),如OSI七層模型、TCP/IP四層模型等等。那么,為什么要將計(jì)算機(jī)網(wǎng)絡(luò)分成這么多層呢?而且,每一層都要加上其特有的頭部(如TCP頭部、IP頭部等等)進(jìn)行封裝,這樣設(shè)計(jì)的原因又何在?

首先我們看一個(gè)我們經(jīng)??吹降腃/S架構(gòu)數(shù)據(jù)流動(dòng)過程圖:

我們以TCP/IP四層網(wǎng)絡(luò)體系架構(gòu)為例,總結(jié)一下各層服務(wù)的作用:

應(yīng)用層:用戶直接能夠操作的層,處理應(yīng)用程序的邏輯,在用戶空間實(shí)現(xiàn)

傳輸層:為兩臺(tái)計(jì)算機(jī)上的應(yīng)用程序提供端到端的通信,實(shí)現(xiàn)了數(shù)據(jù)經(jīng)過網(wǎng)絡(luò)層到達(dá)計(jì)算機(jī)后能夠分發(fā)到各個(gè)端口(分用),在內(nèi)核空間實(shí)現(xiàn)

網(wǎng)絡(luò)層:提供精確到兩端計(jì)算機(jī)互聯(lián)網(wǎng)IP地址的通信,實(shí)現(xiàn)了數(shù)據(jù)包在互聯(lián)網(wǎng)上的選路與轉(zhuǎn)發(fā),在內(nèi)核空間實(shí)現(xiàn)

數(shù)據(jù)鏈路層:提供基于物理媒介(如網(wǎng)卡)的數(shù)據(jù)傳輸服務(wù),在內(nèi)核空間實(shí)現(xiàn)

首先談?wù)劄槭裁匆?strong>分層。在我們實(shí)際的項(xiàng)目開發(fā)過程中,我們常常提到的模塊化、服務(wù)化,其實(shí)和計(jì)算機(jī)網(wǎng)絡(luò)為什么要分層的原理類似。我們可以將每一層都看成一個(gè)模塊、一個(gè)服務(wù),其內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)對(duì)于上一層或者下一層都是隱藏的,可能只對(duì)外暴露一些API而已。如果上層要使用下層提供的服務(wù),根本不需要關(guān)注下一層內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),只需使用下層提供的API即可。這樣一來(lái),方便了開發(fā)與維護(hù),進(jìn)而提高了計(jì)算機(jī)網(wǎng)絡(luò)整體的運(yùn)作效率。

我們?cè)僬劄槭裁匆?strong>封裝。剛才我們談到了每個(gè)模塊都是獨(dú)立的。上層為了使用下層提供的服務(wù),必須封裝。舉個(gè)例子,應(yīng)用層想使用傳輸層提供的端到端的數(shù)據(jù)傳輸服務(wù),那么傳輸層就會(huì)將應(yīng)用層下發(fā)的數(shù)據(jù)先存起來(lái)。為了實(shí)現(xiàn)端到端的數(shù)據(jù)傳輸,傳輸層模塊內(nèi)部需要標(biāo)識(shí)雙方的端口號(hào)。所以,它就會(huì)將端口號(hào)還有一些額外的信息(被稱作(TCP/UDP)首部),和應(yīng)用層下發(fā)的數(shù)據(jù)部分進(jìn)行封裝,一起傳給下一層(即網(wǎng)絡(luò)層)。這樣,通過封裝每一層特有的頭部,實(shí)現(xiàn)了每一層獨(dú)特的功能,最終實(shí)現(xiàn)了精確到端口號(hào)的端到端數(shù)據(jù)傳輸服務(wù)。

為什么需要FastCGI協(xié)議

在LNMP架構(gòu)中,客戶端瀏覽器與nginx代理是通過HTTP協(xié)議進(jìn)行通信的。在請(qǐng)求到達(dá)nginx之后,數(shù)據(jù)最終會(huì)被轉(zhuǎn)發(fā)給上游的PHP-FPM。它們之間的通信,屬于同一機(jī)器上、不同端口號(hào)之間的通信。FastCGI協(xié)議同HTTP協(xié)議一樣,是基于TCP協(xié)議的,處于TCP協(xié)議的上層。而 TCP協(xié)議傳輸?shù)膬H僅是無(wú)意義的字節(jié)流數(shù)據(jù),接收方并不能正確讀取數(shù)據(jù)的含義。所以,它們也需要一個(gè)類似于HTTP的協(xié)議的、一種格式或語(yǔ)法上的規(guī)范與約定。這樣一來(lái),通信雙方才能夠更好地理解、解析并正確讀取對(duì)方傳輸?shù)男畔⒁约皵?shù)據(jù),理解數(shù)據(jù)發(fā)送方所表達(dá)的含義,這就是FastCGI協(xié)議開發(fā)的目的所在。

抓包

接下來(lái)我們會(huì)以nginx與PHP-FPM之前通信的數(shù)據(jù)包為例,利用tcpdump抓取二者通信的數(shù)據(jù)包。所以我們首先需要了解一下各層數(shù)據(jù)報(bào)頭部的格式,但是具體每個(gè)字段的作用,我們會(huì)在接下來(lái)詳細(xì)講解,先讓我們熟悉一下:

數(shù)據(jù)鏈路層(以太網(wǎng)幀為例)

網(wǎng)絡(luò)層(IPv4協(xié)議為例)

傳輸層(TCP協(xié)議為例)

各層之間數(shù)據(jù)包的聯(lián)系

數(shù)據(jù)鏈路層是對(duì)網(wǎng)絡(luò)層數(shù)據(jù)及頭部的封裝;

網(wǎng)路層是對(duì)傳輸層數(shù)據(jù)及頭部的封裝;

傳輸層是對(duì)應(yīng)用層數(shù)據(jù)及頭部的封裝:

由于FastCGI協(xié)議基于TCP協(xié)議,那么它一定會(huì)進(jìn)行三次握手與四次揮手,中間的數(shù)據(jù)包是雙方的數(shù)據(jù)交換,全部的數(shù)據(jù)包如下:

[root@VM_0_3_centos ~]# tcpdump -i lo port 9000 -S -XX
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
13:50:43.883490 IP VM_0_3_centos.33844 > VM_0_3_centos.cslistener: Flags [S], seq 608546013, win 43690, options [mss 65495,sackOK,TS val 961901286 ecr 0,nop,wscale 7], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  003c de3b 4000 4006 5e7e 7f00 0001 7f00  .<.;@.@.^~......
    0x0020:  0001 8434 2328 2445 acdd 0000 0000 a002  ...4#($E........
    0x0030:  aaaa fe30 0000 0204 ffd7 0402 080a 3955  ...0..........9U
    0x0040:  72e6 0000 0000 0103 0307                 r.........
13:50:43.883520 IP VM_0_3_centos.cslistener > VM_0_3_centos.33844: Flags [S.], seq 2973795481, ack 608546014, win 43690, options [mss 65495,sackOK,TS val 961901286 ecr 961901286,nop,wscale 7], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  003c 0000 4000 4006 3cba 7f00 0001 7f00  .<..@.@.<.......
    0x0020:  0001 2328 8434 b140 8499 2445 acde a012  ..#(.4.@..$E....
    0x0030:  aaaa fe30 0000 0204 ffd7 0402 080a 3955  ...0..........9U
    0x0040:  72e6 3955 72e6 0103 0307                 r.9Ur.....
13:50:43.883541 IP VM_0_3_centos.33844 > VM_0_3_centos.cslistener: Flags [.], ack 2973795482, win 342, options [nop,nop,TS val 961901286 ecr 961901286], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  0034 de3c 4000 4006 5e85 7f00 0001 7f00  .4.<@.@.^.......
    0x0020:  0001 8434 2328 2445 acde b140 849a 8010  ...4#($E...@....
    0x0030:  0156 fe28 0000 0101 080a 3955 72e6 3955  .V.(......9Ur.9U
    0x0040:  72e6                                     r.
13:50:43.883594 IP VM_0_3_centos.33844 > VM_0_3_centos.cslistener: Flags [P.], seq 608546014:608546982, ack 2973795482, win 342, options [nop,nop,TS val 961901286 ecr 961901286], length 968
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  03fc de3d 4000 4006 5abc 7f00 0001 7f00  ...=@.@.Z.......
    0x0020:  0001 8434 2328 2445 acde b140 849a 8018  ...4#($E...@....
    0x0030:  0156 01f1 0000 0101 080a 3955 72e6 3955  .V........9Ur.9U
    0x0040:  72e6 0101 0001 0008 0000 0001 0000 0000  r...............
    0x0050:  0000 0104 0001 03a0 0000 0f35 5343 5249  ...........5SCRI
    0x0060:  5054 5f46 494c 454e 414d 452f 6461 7461  PT_FILENAME/data
    0x0070:  2f77 7777 2f68 7464 6f63 732f 6461 7461  /www/htdocs/data
    0x0080:  2f77 7777 2f68 7464 6f63 732f 736e 6f2f  /www/htdocs/sno/
    0x0090:  7075 626c 6963 2f69 6e64 6578 2e70 6870  public/index.php
    0x00a0:  0c00 5155 4552 595f 5354 5249 4e47 0e03  ..QUERY_STRING..
    0x00b0:  5245 5155 4553 545f 4d45 5448 4f44 4745  REQUEST_METHODGE
    0x00c0:  540c 0043 4f4e 5445 4e54 5f54 5950 450e  T..CONTENT_TYPE.
    0x00d0:  0043 4f4e 5445 4e54 5f4c 454e 4754 480b  .CONTENT_LENGTH.
    0x00e0:  0a53 4352 4950 545f 4e41 4d45 2f69 6e64  .SCRIPT_NAME/ind
    0x00f0:  6578 2e70 6870 0b01 5245 5155 4553 545f  ex.php..REQUEST_
    0x0100:  5552 492f 0c01 444f 4355 4d45 4e54 5f55  URI/..DOCUMENT_U
    0x0110:  5249 2f0d 2b44 4f43 554d 454e 545f 524f  RI/.+DOCUMENT_RO
    0x0120:  4f54 2f64 6174 612f 7777 772f 6874 646f  OT/data/www/htdo
    0x0130:  6373 2f64 6174 612f 7777 772f 6874 646f  cs/data/www/htdo
    0x0140:  6373 2f73 6e6f 2f70 7562 6c69 630f 0853  cs/sno/public..S
    0x0150:  4552 5645 525f 5052 4f54 4f43 4f4c 4854  ERVER_PROTOCOLHT
    0x0160:  5450 2f31 2e31 0e04 5245 5155 4553 545f  TP/1.1..REQUEST_
    0x0170:  5343 4845 4d45 6874 7470 1107 4741 5445  SCHEMEhttp..GATE
    0x0180:  5741 595f 494e 5445 5246 4143 4543 4749  WAY_INTERFACECGI
    0x0190:  2f31 2e31 0f0c 5345 5256 4552 5f53 4f46  /1.1..SERVER_SOF
    0x01a0:  5457 4152 456e 6769 6e78 2f31 2e31 312e  TWAREnginx/1.11.
    0x01b0:  390b 0f52 454d 4f54 455f 4144 4452 3131  9..REMOTE_ADDR11
    0x01c0:  332e 3232 372e 3234 392e 3132 370b 0552  3.227.249.127..R
    0x01d0:  454d 4f54 455f 504f 5254 3533 3931 330b  EMOTE_PORT53913.
    0x01e0:  0a53 4552 5645 525f 4144 4452 3137 322e  .SERVER_ADDR172.
    0x01f0:  3136 2e30 2e33 0b02 5345 5256 4552 5f50  16.0.3..SERVER_P
    0x0200:  4f52 5438 300b 0d53 4552 5645 525f 4e41  ORT80..SERVER_NA
    0x0210:  4d45 6772 6170 652e 7961 662e 636f 6d0f  MEgrape.yaf.com.
    0x0220:  0352 4544 4952 4543 545f 5354 4154 5553  .REDIRECT_STATUS
    0x0230:  3230 3009 0f48 5454 505f 484f 5354 3132  200..HTTP_HOST12
    0x0240:  322e 3135 322e 3232 392e 3232 310f 0a48  2.152.229.221..H
    0x0250:  5454 505f 434f 4e4e 4543 5449 4f4e 6b65  TTP_CONNECTIONke
    0x0260:  6570 2d61 6c69 7665 1209 4854 5450 5f43  ep-alive..HTTP_C
    0x0270:  4143 4845 5f43 4f4e 5452 4f4c 6d61 782d  ACHE_CONTROLmax-
    0x0280:  6167 653d 301e 0148 5454 505f 5550 4752  age=0..HTTP_UPGR
    0x0290:  4144 455f 494e 5345 4355 5245 5f52 4551  ADE_INSECURE_REQ
    0x02a0:  5545 5354 5331 0f79 4854 5450 5f55 5345  UESTS1.yHTTP_USE
    0x02b0:  525f 4147 454e 544d 6f7a 696c 6c61 2f35  R_AGENTMozilla/5
    0x02c0:  2e30 2028 4d61 6369 6e74 6f73 683b 2049  .0.(Macintosh;.I
    0x02d0:  6e74 656c 204d 6163 204f 5320 5820 3130  ntel.Mac.OS.X.10
    0x02e0:  5f31 355f 3029 2041 7070 6c65 5765 624b  _15_0).AppleWebK
    0x02f0:  6974 2f35 3337 2e33 3620 284b 4854 4d4c  it/537.36.(KHTML
    0x0300:  2c20 6c69 6b65 2047 6563 6b6f 2920 4368  ,.like.Gecko).Ch
    0x0310:  726f 6d65 2f37 352e 302e 3337 3730 2e31  rome/75.0.3770.1
    0x0320:  3030 2053 6166 6172 692f 3533 372e 3336  00.Safari/537.36
    0x0330:  0b76 4854 5450 5f41 4343 4550 5474 6578  .vHTTP_ACCEPTtex
    0x0340:  742f 6874 6d6c 2c61 7070 6c69 6361 7469  t/html,applicati
    0x0350:  6f6e 2f78 6874 6d6c 2b78 6d6c 2c61 7070  on/xhtml+xml,app
    0x0360:  6c69 6361 7469 6f6e 2f78 6d6c 3b71 3d30  lication/xml;q=0
    0x0370:  2e39 2c69 6d61 6765 2f77 6562 702c 696d  .9,image/webp,im
    0x0380:  6167 652f 6170 6e67 2c2a 2f2a 3b71 3d30  age/apng,*/*;q=0
    0x0390:  2e38 2c61 7070 6c69 6361 7469 6f6e 2f73  .8,application/s
    0x03a0:  6967 6e65 642d 6578 6368 616e 6765 3b76  igned-exchange;v
    0x03b0:  3d62 3314 0d48 5454 505f 4143 4345 5054  =b3..HTTP_ACCEPT
    0x03c0:  5f45 4e43 4f44 494e 4767 7a69 702c 2064  _ENCODINGgzip,.d
    0x03d0:  6566 6c61 7465 140e 4854 5450 5f41 4343  eflate..HTTP_ACC
    0x03e0:  4550 545f 4c41 4e47 5541 4745 7a68 2d43  EPT_LANGUAGEzh-C
    0x03f0:  4e2c 7a68 3b71 3d30 2e39 0104 0001 0000  N,zh;q=0.9......
    0x0400:  0000 0105 0001 0000 0000                 ..........
13:50:43.883602 IP VM_0_3_centos.cslistener > VM_0_3_centos.33844: Flags [.], ack 608546982, win 357, options [nop,nop,TS val 961901286 ecr 961901286], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  0034 f67c 4000 4006 4645 7f00 0001 7f00  .4.|@.@.FE......
    0x0020:  0001 2328 8434 b140 849a 2445 b0a6 8010  ..#(.4.@..$E....
    0x0030:  0165 fe28 0000 0101 080a 3955 72e6 3955  .e.(......9Ur.9U
    0x0040:  72e6                                     r.
13:50:43.885366 IP VM_0_3_centos.cslistener > VM_0_3_centos.33844: Flags [P.], seq 2973795482:2973795650, ack 608546982, win 357, options [nop,nop,TS val 961901288 ecr 961901286], length 168
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  00dc f67d 4000 4006 459c 7f00 0001 7f00  ...}@.@.E.......
    0x0020:  0001 2328 8434 b140 849a 2445 b0a6 8018  ..#(.4.@..$E....
    0x0030:  0165 fed0 0000 0101 080a 3955 72e8 3955  .e........9Ur.9U
    0x0040:  72e6 0106 0001 008d 0300 582d 506f 7765  r.........X-Powe
    0x0050:  7265 642d 4279 3a20 5048 502f 372e 322e  red-By:.PHP/7.2.
    0x0060:  3132 0d0a 436f 6e74 656e 742d 5479 7065  12..Content-Type
    0x0070:  3a61 7070 6c69 6361 7469 6f6e 2f6a 736f  :application/jso
    0x0080:  6e3b 2063 6861 7273 6574 3d75 7466 2d38  n;.charset=utf-8
    0x0090:  0d0a 0d0a 7b22 7374 6174 7573 223a 3531  ....{"status":51
    0x00a0:  342c 226d 7367 223a 2255 6e65 7863 6570  4,"msg":"Unexcep
    0x00b0:  7465 6420 6120 656d 7074 7920 636f 6e74  ted.a.empty.cont
    0x00c0:  726f 6c6c 6572 206e 616d 6522 2c22 6461  roller.name","da
    0x00d0:  7461 223a 5b5d 7d00 0000 0103 0001 0008  ta":[]}.........
    0x00e0:  0000 0000 0000 0077 5c2f                 .......w/
13:50:43.885378 IP VM_0_3_centos.33844 > VM_0_3_centos.cslistener: Flags [.], ack 2973795650, win 350, options [nop,nop,TS val 961901288 ecr 961901288], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  0034 de3e 4000 4006 5e83 7f00 0001 7f00  .4.>@.@.^.......
    0x0020:  0001 8434 2328 2445 b0a6 b140 8542 8010  ...4#($E...@.B..
    0x0030:  015e fe28 0000 0101 080a 3955 72e8 3955  .^.(......9Ur.9U
    0x0040:  72e8                                     r.
13:50:43.885396 IP VM_0_3_centos.cslistener > VM_0_3_centos.33844: Flags [F.], seq 2973795650, ack 608546982, win 357, options [nop,nop,TS val 961901288 ecr 961901288], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  0034 f67e 4000 4006 4643 7f00 0001 7f00  .4.~@.@.FC......
    0x0020:  0001 2328 8434 b140 8542 2445 b0a6 8011  ..#(.4.@.B$E....
    0x0030:  0165 fe28 0000 0101 080a 3955 72e8 3955  .e.(......9Ur.9U
    0x0040:  72e8                                     r.
13:50:43.885667 IP VM_0_3_centos.33844 > VM_0_3_centos.cslistener: Flags [F.], seq 608546982, ack 2973795651, win 350, options [nop,nop,TS val 961901288 ecr 961901288], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  0034 de3f 4000 4006 5e82 7f00 0001 7f00  .4.?@.@.^.......
    0x0020:  0001 8434 2328 2445 b0a6 b140 8543 8011  ...4#($E...@.C..
    0x0030:  015e fe28 0000 0101 080a 3955 72e8 3955  .^.(......9Ur.9U
    0x0040:  72e8                                     r.
13:50:43.885678 IP VM_0_3_centos.cslistener > VM_0_3_centos.33844: Flags [.], ack 608546983, win 357, options [nop,nop,TS val 961901288 ecr 961901288], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  0034 f67f 4000 4006 4642 7f00 0001 7f00  .4..@.@.FB......
    0x0020:  0001 2328 8434 b140 8543 2445 b0a7 8010  ..#(.4.@.C$E....
    0x0030:  0165 fe28 0000 0101 080a 3955 72e8 3955  .e.(......9Ur.9U
    0x0040:  72e8                                     r.

我們可以看到,前三個(gè)包就是TCP的三次握手,經(jīng)過了一定量的數(shù)據(jù)傳輸之后,最后四個(gè)包就是TCP的四次揮手,我們可以用下圖來(lái)進(jìn)行表示:

我們挑選第二個(gè)數(shù)據(jù)包進(jìn)行詳細(xì)講解。我們可以分析出,它是建立TCP連接的三次握手中的第二次握手,是由服務(wù)端返回給客戶端的ACK包:

13:50:43.883520 IP VM_0_3_centos.cslistener > VM_0_3_centos.33844: Flags [S.], seq 2973795481, ack 608546014, win 43690, options [mss 65495,sackOK,TS val 961901286 ecr 961901286,nop,wscale 7], length 0
    0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
    0x0010:  003c 0000 4000 4006 3cba 7f00 0001 7f00  .<..@.@.<.......
    0x0020:  0001 2328 8434 b140 8499 2445 acde a012  ..#(.4.@..$E....
    0x0030:  aaaa fe30 0000 0204 ffd7 0402 080a 3955  ...0..........9U
    0x0040:  72e6 3955 72e6 0103 0307                 r.9Ur.....

每一組是4個(gè)16進(jìn)制數(shù)字,所以每一組是16位,即兩個(gè)字節(jié)。

由于當(dāng)前數(shù)據(jù)包是經(jīng)過層層封裝的最終的數(shù)據(jù)包,所以它包含幀頭部、IP頭部、TCP頭部、以及應(yīng)用程序數(shù)據(jù)(參考上圖)下面我們逐個(gè)字節(jié)分析:

幀頭部

0000 0000 0000:源MAC地址(源MAC地址是6個(gè)字節(jié),由于都是本機(jī)所以為全0)

0000 0000 0000:目的MAC地址(目的MAC地址是6個(gè)字節(jié))

0800:表示類型為IP數(shù)據(jù)報(bào)(類型字段為了區(qū)分是使用IP協(xié)議、ARP協(xié)議還是RARP協(xié)議類型的幀)

IPv4協(xié)議頭部

4:版本號(hào)為IPv4

5:IP協(xié)議頭部長(zhǎng)度為5 * 4(以4B為單位計(jì)算) = 20字節(jié)

00:8位服務(wù)類型

003c:總長(zhǎng)度為60字節(jié)

0000:16位標(biāo)識(shí)(同一個(gè)IP數(shù)據(jù)報(bào)的所有分片的標(biāo)識(shí)均相同)

4000:3位標(biāo)志 + 13位片偏移(0100 0000 0000 0000)(010代表禁止分片,片偏移為0)

40:8位生存時(shí)間TTL(數(shù)據(jù)報(bào)到達(dá)目的地之前允許的路由器跳數(shù),通常為64)

06:8位協(xié)議(用來(lái)區(qū)分上層協(xié)議,6為TCP)

3cba:16位頭部校驗(yàn)和(接收端使用CRC算法檢驗(yàn)IP數(shù)據(jù)報(bào)頭部是否損壞)

7f00 0001:32位源端IP地址(轉(zhuǎn)化為十進(jìn)制127.0.0.1)

7f00 0001:32位目的端IP地址(轉(zhuǎn)化為十進(jìn)制127.0.0.1)

TCP協(xié)議頭部

2328:16位源端口號(hào)(十進(jìn)制值為9000,因?yàn)镻HP-FPM的端口號(hào)為9000)

8434:16位目的端口號(hào)(十進(jìn)制值為33844,是建立初始TCP連接時(shí)產(chǎn)生的隨機(jī)端口號(hào))

b140 8499:32位序號(hào)(十進(jìn)制值為2973795481,是服務(wù)端的初始序號(hào))

2445 acde:32位確認(rèn)號(hào)(十進(jìn)制值為608546014,代表客戶端608546013及之前序號(hào)的報(bào)文段已全部收到)

a:TCP協(xié)議頭部長(zhǎng)度為10 * 4(以4B為單位計(jì)算) = 40字節(jié)

012:6位保留 + URG|ACK|PSH|RST|SYN|FIN (012 = 000000 010010,即ACK = 1及SYN = 1,符合三次握手規(guī)律)

aaaa:16位窗口大?。ㄊM(jìn)制值為43690,告訴對(duì)方自己的TCP接收緩沖區(qū)還能容納多少字節(jié)的數(shù)據(jù),這樣對(duì)方就可以控制數(shù)據(jù)的發(fā)送速度)

fe30:16位校驗(yàn)和(接收端使用CRC算法檢驗(yàn)TCP數(shù)據(jù)報(bào)頭部及數(shù)據(jù)部分是否損壞,是TCP可靠傳輸?shù)谋U希?/p>

0000:16位緊急指針(用來(lái)讓發(fā)送端給接收端發(fā)送緊急數(shù)據(jù))

0204 ffd7 0402 080a 3955 72e6 3955 72e6 0103 0307:20字節(jié)的TCP頭部選項(xiàng)


當(dāng)三次握手之后,TCP連接正式建立。我們可以在下面幾個(gè)包中看到具體的HTTP協(xié)議的請(qǐng)求行、請(qǐng)求主體、以及相應(yīng)的返回狀態(tài)碼及響應(yīng)主體等內(nèi)容。

我們總結(jié)一下,F(xiàn)astCGI協(xié)議其實(shí)就相當(dāng)于基于TCP協(xié)議的HTTP協(xié)議。在LNMP架構(gòu)中,nginx是一個(gè)web服務(wù)器,只支持HTTP協(xié)議數(shù)據(jù)的輸入與輸出;而PHP-FPM只支持FastCGI協(xié)議的輸入與輸出,這里nginx就可以看成是一個(gè)協(xié)議轉(zhuǎn)換器的作用。它下層的TCP協(xié)議是面向字節(jié)流傳輸?shù)模瑐鹘o對(duì)方的只是一堆的字節(jié)數(shù)據(jù),接收方無(wú)法解析其內(nèi)容所代表的含義。那么我們開發(fā)HTTP協(xié)議、FastCGI協(xié)議等等也是同理。為了能夠讓PHP-FPM更加輕松容易地解析nginx轉(zhuǎn)發(fā)過來(lái)的數(shù)據(jù)包,讀懂基于TCP的這些字節(jié)流數(shù)據(jù)的含義,那么我們必須約定一種數(shù)據(jù)格式,讓數(shù)據(jù)的傳輸、讀取更加方便、高效、規(guī)范,這就是開發(fā)FastCGI協(xié)議的目的。這篇文章只是給大家一個(gè)復(fù)習(xí)以及鋪墊,具體FastCGI協(xié)議所規(guī)定的格式與詳細(xì)內(nèi)容請(qǐng)聽下回分解。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/40519.html

相關(guān)文章

  • 【LNMPR源碼學(xué)習(xí)】筆記匯總

    摘要:此文用于匯總跟隨陳雷老師及團(tuán)隊(duì)的視頻,學(xué)習(xí)源碼過程中的思考整理與心得體會(huì),此文會(huì)不斷更新視頻傳送門每日學(xué)習(xí)記錄使用錄像設(shè)備記錄每天的學(xué)習(xí)源碼學(xué)習(xí)源碼學(xué)習(xí)內(nèi)存管理筆記源碼學(xué)習(xí)內(nèi)存管理筆記源碼學(xué)習(xí)內(nèi)存管理筆記源碼學(xué)習(xí)基本變量筆記 此文用于匯總跟隨陳雷老師及團(tuán)隊(duì)的視頻,學(xué)習(xí)源碼過程中的思考、整理與心得體會(huì),此文會(huì)不斷更新 視頻傳送門:【每日學(xué)習(xí)記錄】使用錄像設(shè)備記錄每天的學(xué)習(xí) PHP7...

    Barrior 評(píng)論0 收藏0
  • PHP7源碼學(xué)習(xí)2019-04-10 FastCGI協(xié)議2

    摘要:全部視頻引入讀這篇文章之前請(qǐng)先閱讀源碼學(xué)習(xí)協(xié)議我們知道,客戶端之間通信的方式如下那么,我們今天詳細(xì)解釋一下圖中的協(xié)議的部分。協(xié)議就是為了解決協(xié)議的相關(guān)問題而出現(xiàn),是協(xié)議的升級(jí)版。在配置中指令中指定的值請(qǐng)求使用的協(xié)議,通常是或。 baiyan 全部視頻:https://segmentfault.com/a/11... 引入 讀這篇文章之前請(qǐng)先閱讀【PHP源碼學(xué)習(xí)】2019-04-09 ...

    Cympros 評(píng)論0 收藏0
  • Just for fun——windows上的php-fpm

    摘要:,配是通過一個(gè)類似的協(xié)議,升級(jí)版的的。在上有幫你管理進(jìn)程,在似乎沒有,這是有點(diǎn)令人悲傷的。檢驗(yàn)一下然后開啟然后配置中里文件在盤建立一個(gè)的文件夾,放入,開啟測(cè)試寫入訪問應(yīng)用我的項(xiàng)目就用了這個(gè)東西,,歡迎 fastcgi As we all know,nginx配php是通過fastcgi(一個(gè)類似http的協(xié)議,升級(jí)版的cgi)的。在linux上有php-fpm幫你管理進(jìn)程,在windo...

    kel 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

wh469012917

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<