日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

服务器无法在发送 http 标头之后设置内容类型。_python socket编程预知内容

發(fā)布時(shí)間:2025/3/12 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器无法在发送 http 标头之后设置内容类型。_python socket编程预知内容 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

socket:運(yùn)用IP地址+協(xié)議+端口 標(biāo)識(shí)一個(gè)進(jìn)程

我們知道兩個(gè)進(jìn)程如果需要進(jìn)行通訊最基本的一個(gè)前提能能夠唯一的標(biāo)示一個(gè)進(jìn)程, 在本地進(jìn)程通訊中我們可以使用PID來(lái)唯一標(biāo)示一個(gè)進(jìn)程,但PID只在本地唯一,網(wǎng)絡(luò)中的兩個(gè)進(jìn)程PID沖突幾率很大 ,這時(shí)候我們需要另辟它徑了,我們知道IP層的ip地址可以唯一標(biāo)示主機(jī),而TCP層協(xié)議和端口號(hào)可以唯一標(biāo)示主機(jī) 的一個(gè)進(jìn)程,這樣我們可以利用ip地址+協(xié)議+端口號(hào)唯一標(biāo)示網(wǎng)絡(luò)中的一個(gè)進(jìn)程

要想進(jìn)程進(jìn)行通訊,要給這兩個(gè)進(jìn)程,分別做一個(gè)唯一的標(biāo)記

  • socket: 被標(biāo)識(shí)的進(jìn)程,能利用socket進(jìn)行網(wǎng)絡(luò)通信了。
  • socket是在應(yīng)用層和傳輸層之間的一個(gè)抽象層
  • 把TCP/IP層復(fù)雜的操作,
  • 抽象為幾個(gè)簡(jiǎn)單的接口,
  • 供應(yīng)用層調(diào)用已實(shí)現(xiàn)進(jìn)程在網(wǎng)絡(luò)中通信。
socket起源于UNIX,在Unix一切皆文件哲學(xué)的思想下,socket是一種"打開—讀/寫—關(guān)閉"模式的實(shí)現(xiàn), 服務(wù)器和客戶端各自維護(hù)一個(gè)"文件",在建立連接打開后,可以向自己文件寫入內(nèi)容供對(duì)方讀取或者讀取對(duì)方內(nèi)容 ,通訊結(jié)束時(shí)關(guān)閉文件

網(wǎng)絡(luò)通信實(shí)現(xiàn):

網(wǎng)絡(luò)通信duan機(jī)需具備四要素本機(jī)的IP地址 子網(wǎng)掩碼 網(wǎng)關(guān)的IP地址 DNS的IP地址 獲取這四要素分兩種方式1.靜態(tài)獲取 即手動(dòng)配置 2.動(dòng)態(tài)獲取 通過dhcp獲取以太網(wǎng)頭 ip頭 udp頭 dhcp數(shù)據(jù)包(1)最前面的”以太網(wǎng)標(biāo)頭”,設(shè)置發(fā)出方(本機(jī))的MAC地址和接收方(DHCP服務(wù)器)的MAC地址。 前者就是本機(jī)網(wǎng)卡的MAC地址,后者這時(shí)不知道,就填入一個(gè)廣播地址:FF-FF-FF-FF-FF-FF。 (2)后面的”IP標(biāo)頭”,設(shè)置發(fā)出方的IP地址和接收方的IP地址。這時(shí),對(duì)于這兩者,本機(jī)都不知道。 于是,發(fā)出方的IP地址就設(shè)為0.0.0.0,接收方的IP地址設(shè)為255.255.255.255。 (3)最后的”UDP標(biāo)頭”,設(shè)置發(fā)出方的端口和接收方的端口。這一部分是DHCP協(xié)議規(guī)定好的,發(fā)出方是68端口, 接收方是67端口。 1.以太網(wǎng)標(biāo)頭: 設(shè)置 本機(jī)MAC地址 服務(wù)器MAC地址 2.IP標(biāo)頭 : 設(shè)置 本機(jī)IP地址 服務(wù)器IP地址 3.UDP標(biāo)頭:設(shè)置 本機(jī)端口 服務(wù)器端口這個(gè)數(shù)據(jù)包構(gòu)造完成后,就可以發(fā)出了。以太網(wǎng)是廣播發(fā)送,同一個(gè)子網(wǎng)絡(luò)的每臺(tái)計(jì)算機(jī)都收到了這個(gè)包。 因?yàn)榻邮辗降腗AC地址是FF-FF-FF-FF-FF-FF,看不出是發(fā)給誰(shuí)的,所以每臺(tái)收到這個(gè)包的計(jì)算機(jī),還必須分析 這個(gè)包的IP地址,才能確定是不是發(fā)給自己的。當(dāng)看到發(fā)出方IP地址是0.0.0.0,接收方是255.255.255.255, 于是DHCP服務(wù)器知道”這個(gè)包是發(fā)給我的”,而其他計(jì)算機(jī)就可以丟棄這個(gè)包。 ===========================================================================接下來(lái),DHCP服務(wù)器讀出這個(gè)包的數(shù)據(jù)內(nèi)容,分配好IP地址,發(fā)送回去一個(gè)”DHCP響應(yīng)”數(shù)據(jù)包。 這個(gè)響應(yīng)包的結(jié)構(gòu)也是類似的,以太網(wǎng)標(biāo)頭的MAC地址是雙方的網(wǎng)卡地址,IP標(biāo)頭的IP地址是DHCP服務(wù)器的IP地址 (發(fā)出方)和255.255.255.255(接收方),UDP標(biāo)頭的端口是67(發(fā)出方)和68(接收方), 分配給請(qǐng)求端的IP地址和本網(wǎng)絡(luò)的具體參數(shù)則包含在Data部分。新加入的計(jì)算機(jī)收到這個(gè)響應(yīng)包,于是就知道了自己的IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)地址、DNS服務(wù)器等等參數(shù)

網(wǎng)絡(luò)通信流程:一下內(nèi)容均摘自我的老師的博客

1.本機(jī)獲取

  • 本機(jī)的IP地址:192.168.1.100
  • 子網(wǎng)掩碼:255.255.255.0
  • 網(wǎng)關(guān)的IP地址:192.168.1.1
  • DNS的IP地址:8.8.8.8

2.打開瀏覽器,想要訪問Google,在地址欄輸入了網(wǎng)址:http://www.google.com。

3.dns協(xié)議(基于udp協(xié)議)

13臺(tái)根dns:

A.root-servers.net198.41.0.4美國(guó)
B.root-servers.net192.228.79.201美國(guó)(另支持IPv6)
C.root-servers.net192.33.4.12法國(guó)
D.root-servers.net128.8.10.90美國(guó)
E.root-servers.net192.203.230.10美國(guó)
F.root-servers.net192.5.5.241美國(guó)(另支持IPv6)
G.root-servers.net192.112.36.4美國(guó)
H.root-servers.net128.63.2.53美國(guó)(另支持IPv6)
I.root-servers.net192.36.148.17瑞典
J.root-servers.net192.58.128.30美國(guó)
K.root-servers.net193.0.14.129英國(guó)(另支持IPv6)
L.root-servers.net198.32.64.12美國(guó)
M.root-servers.net202.12.27.33日本(另支持IPv6)

域名定義:http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html

頂級(jí)域名:以.com,.net,.org,.cn等等屬于國(guó)際頂級(jí)域名,根據(jù)目前的國(guó)際互聯(lián)網(wǎng)域名體系,國(guó)際頂級(jí)域名分為兩類:類別頂級(jí)域名(gTLD)和地理頂級(jí)域名(ccTLD)兩種。類別頂級(jí)域名是         以"COM"、"NET"、"ORG"、"BIZ"、"INFO"等結(jié)尾的域名,均由國(guó)外公司負(fù)責(zé)管理。地理頂級(jí)域名是以國(guó)家或地區(qū)代碼為結(jié)尾的域名,如"CN"代表中國(guó),"UK"代表英國(guó)。地理頂級(jí)域名一般由各個(gè)國(guó)家或地區(qū)負(fù)責(zé)管理。

二級(jí)域名:二級(jí)域名是以頂級(jí)域名為基礎(chǔ)的地理域名,比喻中國(guó)的二級(jí)域有,.com.cn,.net.cn,.org.cn,.http://gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是http://www.abc.com或者*.abc.com.
一般來(lái)說,二級(jí)域名是域名的一條記錄,比如http://alidiedie.com是一個(gè)域名,http://www.alidiedie.com是其中比較常用的記錄,一般默認(rèn)是用這個(gè),但是類似*.http://alidiedie.com的域名全部稱作是http://alidiedie.com的二級(jí)

4.HTTP部分的內(nèi)容,類似于下面這樣:

GET / HTTP/1.1
Host: http://www.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: … …

我們假定這個(gè)部分的長(zhǎng)度為4960字節(jié),它會(huì)被嵌在TCP數(shù)據(jù)包之中。

5 TCP協(xié)議

TCP數(shù)據(jù)包需要設(shè)置端口,接收方(Google)的HTTP端口默認(rèn)是80,發(fā)送方(本機(jī))的端口是一個(gè)隨機(jī)生成的1024-65535之間的整數(shù),假定為51775。

TCP數(shù)據(jù)包的標(biāo)頭長(zhǎng)度為20字節(jié),加上嵌入HTTP的數(shù)據(jù)包,總長(zhǎng)度變?yōu)?980字節(jié)。

6 IP協(xié)議

然后,TCP數(shù)據(jù)包再嵌入IP數(shù)據(jù)包。IP數(shù)據(jù)包需要設(shè)置雙方的IP地址,這是已知的,發(fā)送方是192.168.1.100(本機(jī)),接收方是172.194.72.105(Google)。

IP數(shù)據(jù)包的標(biāo)頭長(zhǎng)度為20字節(jié),加上嵌入的TCP數(shù)據(jù)包,總長(zhǎng)度變?yōu)?000字節(jié)。

7 以太網(wǎng)協(xié)議

最后,IP數(shù)據(jù)包嵌入以太網(wǎng)數(shù)據(jù)包。以太網(wǎng)數(shù)據(jù)包需要設(shè)置雙方的MAC地址,發(fā)送方為本機(jī)的網(wǎng)卡MAC地址,接收方為網(wǎng)關(guān)192.168.1.1的MAC地址(通過ARP協(xié)議得到)。

以太網(wǎng)數(shù)據(jù)包的數(shù)據(jù)部分,最大長(zhǎng)度為1500字節(jié),而現(xiàn)在的IP數(shù)據(jù)包長(zhǎng)度為5000字節(jié)。因此,IP數(shù)據(jù)包必須分割成四個(gè)包。因?yàn)槊總€(gè)包都有自己的IP標(biāo)頭(20字節(jié)),所以四個(gè)包的IP數(shù)據(jù)包的長(zhǎng)度分別為1500、1500、1500、560。

8 服務(wù)器端響應(yīng)

經(jīng)過多個(gè)網(wǎng)關(guān)的轉(zhuǎn)發(fā),Google的服務(wù)器172.194.72.105,收到了這四個(gè)以太網(wǎng)數(shù)據(jù)包。

根據(jù)IP標(biāo)頭的序號(hào),Google將四個(gè)包拼起來(lái),取出完整的TCP數(shù)據(jù)包,然后讀出里面的”HTTP請(qǐng)求”,接著做出”HTTP響應(yīng)”,再用TCP協(xié)議發(fā)回來(lái)。

本機(jī)收到HTTP響應(yīng)以后,就可以將網(wǎng)頁(yè)顯示出來(lái),完成一次網(wǎng)絡(luò)通信。

總結(jié)

以上是生活随笔為你收集整理的服务器无法在发送 http 标头之后设置内容类型。_python socket编程预知内容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。