我正在玩Wireshark來調試我正在處理的一些物聯網家庭自動化項目。我想我會從更多地瞭解HTTP和TCP/IP如何實際工作中受益。我發現的大多數解釋都將HTTP描述爲「騎在TCP/IP之上」,但我更具體地詢問實際發送的內容。TCP/IP和HTTP如何協同工作?
這是我拍攝的客戶機/服務器交互的例子:
Client: [SYN]
Server: [SYN, ACK]
Client: [ACK]
如果我到目前爲止明白,他們現在已經成功地建立TCP連接。雖然,下一次捕獲顯示我
Client: POST /whatever
Server: 200 OK
好吧,現在我迷路了。檢查該捕獲表明我在一個幀中都有以太網,IP,TCP和HTTP層。它是否真的很簡單,客戶端在TCP數據包結束後添加一堆文本,並將這些額外的字節噴到路由器上?據推測,這可以解析TCP/IP並相應地轉發它?這是我混亂的根源。 「乘坐在最上面」是否意味着(在物理意義上)HTTP只是在TCP數據包之後在同一幀中發送的一系列字節?在這種情況下,HTTP是否被認爲是TCP/IP的有效載荷?
,當然還有完成
Server: [FIN, ACK]
Client: [ACK]
Client: [FIN, ACK]
Server: [ACK]
//In this case the server terminates the connection.
編輯:下方的評論者提出了一個問題,這使得我感覺好像我一直沒對我要求什麼,我很清楚。假設我可以站在我的客戶端和服務器之間(或者在我的客戶端和路由器之間以及路由器和服務器之間再次站立)。當人們不得不通過物理介質物理地發送原始數據(校驗和,糾錯碼等)時,忽略考慮的因素,實際流量在時間方面會是什麼樣子?我會看到以太網層的字節,然後是ip層,tcp,http等字節嗎?
HTTP只是TCP的數據,但我不知道你爲什麼一直說'*在TCP數據包之後'。通過TCP發送的數據通過* TCP數據包發送*。 – EJP
我的意思是說,在某些時候,我的客戶端(傳感器)只是通過無線方式向路由器發送一個字節流。路由器解釋這些腳本並與他們做一些事(將它們轉發給服務器)。該字節流可以用一些有用的方式解釋。如果您要從傳感器的天線發送出一個字節的字節流,它會看起來像[以太網] [IP] [TCP] [HTTP]嗎?(當然,除非我認爲是很多糾錯碼,校驗和等)。 – brenzo
如果您從天線發送信息,它將是Wi-Fi,幀將是Wi-Fi幀,而不是以太網幀。 Wi-Fi和以太網是兩種完全不同的數據鏈路協議。 –