愚公移山日記 23

2021-10-05 02:34:11 字數 3178 閱讀 6200

網域名稱

網域名稱解析系統,主要適用於將網域名稱轉換成對應的ip位址。

瀏覽器訪問伺服器的過程:瀏覽器與伺服器建立連線時,是先去訪問dns伺服器,返回網域名稱相對應的ip位址,再去將得到的ip位址區連線相應的伺服器,由伺服器返回給我們資訊。

當然在實際的訪問過程中,建立連線時,會先訪問本地dns,如果在本地的dns中沒有找到相對應的網域名稱,那麼再去訪問dns伺服器。

c:\windows\system32\drivers\ect\hosts 本地的dns位置

http協議概述

超文字傳輸協議:為了提供發布和接受html頁面的方法,http是基於tcp,瀏覽器和伺服器之間由tcp連線。

http協議分為兩個部分:請求協議,響應協議

請求行

get 請求方式

/ 請求資源的路徑  體現請求資源的路徑 (不包含網域名稱)

http/1.1 請求協議以及版本

請求頭

協議名:協議內容

host :當url中所要請求的伺服器的主機名

accept-encoding:是瀏覽器發給伺服器,宣告瀏覽器支援解壓編碼型別

accept_charset:表示瀏覽器支援的字符集

referer:表示此次請求來自於哪個**

accept-language zh-cn,zh;q= 0.8(權重,越大越先解析)

cookie:如果當前請求的伺服器在瀏覽器端設定了資料(cookie)那麼當前瀏覽器再次請求該伺服器的時候,就會把對應資料帶回去。

user-agent:使用者**,當前發起請求的瀏覽器的核心資訊。

accept:表達瀏覽器可以接受的資料型別,text/html,iamage/img

請求空行

分割請求頭與請求主體

請求主體

瀏覽器要傳送給伺服器的內容

get方式沒有請求體,post方式才有請求體

http響應報文協議分析

是伺服器向瀏覽器做出響應(反饋資料)時候的協議

響應行

協議與版本 響應的狀態碼 200 表示伺服器已經接受了瀏覽器的請求並且返回了資料 響應狀態的描述

1開頭:已經接受仍在處理

3開頭:重定向的乙個網頁

500:伺服器報的錯誤

響應頭

*server :伺服器的版本

data:響應時間

contend length :響應的長度

*content-type :相應的資料型別

location :重定向

refresh:重定向(重新整理)

空行

分割響應頭與響應主體

簡單的web伺服器

''

#tcp服務端

#匯入模組

#建立套接字

#設定位址重用

#繫結埠

#設定監聽,讓套接字由主動變為被動

#接受客戶端連線 定義函式 request_handler()

#接受客戶端瀏覽器傳送的請求協議

#判斷協議是否為空

#拼接響應的報文

#傳送響應報文

#關閉操作

'''import socket

def request_handler(new_client_socket,ip_port):

#接受客戶端瀏覽器傳送的請求協議

request_data = new_client_socket.recv(1024)

#print(request_data)

#判斷協議是否為空

if not request_data:

print('客戶端已經下線' +str(ip_port))

new_client_socket.close()

return

#拼接響應的報文

#相應行

#響應頭

response_header ='server:python/2.1\r\n'

#響應空行

response_blank = '\r\n'

#響應主體

response_body = 'helloworld'

response_data = response_line + response_header +response_blank +response_body

#傳送響應報文

new_client_socket.send(response_data.encode())

#關閉當前連線

def main():

'''主函式'''

#匯入模組

#建立套接字

tcp_client_socket = socket.socket(socket.af_inet,socket.sock_stream)

#設定位址重用

#當前套接字,設定位址重用,屬性為ture

tcp_client_socket.setsockopt(socket.sol_socket,socket.so_reuseaddr,

true

)#繫結埠

tcp_client_socket.bind((''

,8080))

#設定監聽,讓套接字由主動變為被動

tcp_client_socket.listen(

128)

#接受客戶端連線 定義函式 request_handler()

while

true

: new_client_socket,ip_port = tcp_client_socket.accept(

)#呼叫函式處理

request_handler(new_client_socket,ip_port)

if __name__ ==

'__main__'

: main(

)

在今天的實現**的過程中我這裡出現了一些問題,程式可以執行,但是不能給客戶端反應情況,我思考到底是不是因為虛擬機器,或者在作業系統的環境搭建出現了問題。

愚公移山日記 11

學習進度 今天的學習內容確實有點少,主要是剛買到一本新書,一本很基礎的書,有一本新書,肯定是要看的呀,但是書本的內容實在是太基礎,但是又害怕直接跳過,會錯過寫什麼內容,畢竟python的內容實在是太豐富了。下面我來根據子所學的內容,和自己的實踐經驗來給各位分享一下吧。idle的使用介紹 氣泡排序法 ...

愚公移山日記 20

學習進度 我寫的日記倒不如說是筆記,今天的學習也算可以,敲了乙個udp聊天的例項,不是很多,但是 的註解叫我很是費腦筋,敲了好多,唯恐描述不清楚,也並非有大胸懷去教會他人,只求在以後偶然翻看,自己能理解。說明在我學習的這些課程均用到linux系統的終端,虛擬機器,由於本人能力有限制,並不能保證所有 ...

愚公移山日記 26

學習進度 今天的主要學習成果是學習多程序,queue模組,佇列的基本用法如下 佇列是multiprocessing模組提供的乙個類 建立佇列 放值取值 import multiprocessing 建立佇列 佇列是multiprocessing模組提供的乙個類 multiprocessing.que...