在使用http訪問遠端伺服器前我們要先了解重點訪問的步驟
總的來說分為3點
1.建立tcp連線(三步握手協議)
第一次第一次握手:建立連線時,客戶端傳送syn包(seq=j)到伺服器,並進入syn_sent狀態,等待伺服器確認;syn:同步序列編號(synchronize sequence numbers)。
第二次第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(seq=k),即syn+ack包,此時伺服器進入syn_recv狀態。
第三次第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established(tcp連線成功)狀態,完成三次握手。
2.傳送http協議
http協議的制定
其中協議版本一般為 http/1.x
這裡以http/1.1為例
他定義的請求方法一般有
get是以實體的方式得到由請求uri所指定資源的資訊,如果請求uri只是乙個資料產生過程,那麼最終要在響應實體中返回的是處理過程的結果所指向的資源,而不是處理過程的描述。
post
用來向目的伺服器發出請求,要求它接受被附在請求後的實體,並把它當作請求佇列中請求uri所指定資源的附加新子項,post被設計成用統一的方法實現下列功能:
(1)對現有資源的解釋
(2)向電子公告欄、新聞組、郵件列表或類似討論組發資訊。
(3)提交資料塊
(4)通過附加操作來擴充套件資料庫
head
向伺服器索要與get請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情況下,就可以獲取包含在響應訊息頭中的元資訊。該方法常用於測試超連結的有效性,是否可以訪問,以及最近是否更新。
其他方法
url代表的是**
下面談論頭部網域名稱稱
頭部網域名稱稱詳解
3.傳送連線請求,等待伺服器響應
在虛擬機器中輸入ping www.baidu.com可以得到以下資訊163.177.151.109就是伺服器的位址
在建立tcp通訊的時候http 伺服器的預設埠為 : 80
#include
#include
/* see notes */
#include
#include
#include
#include
#include
#include
#include
#include
intmain()
else
//2.連線伺服器
struct sockaddr_in addr;
addr.sin_family = af_inet;
addr.sin_port =
htons(80
); addr.sin_addr.s_addr =
inet_addr
("163.177.151.109");
int ret=
connect
(tcp_socket,
(struct sockaddr *
)&addr,
sizeof
(addr));
if(ret ==0)
else
//http 協議
;//協議的制定
("等待伺服器回應\n");
read
(tcp_socket,buf,
1024);
printf
("%s\n"
,buf);}
}
執行上面**返回200 ok說明訪問伺服器成功
Http協議 MySql伺服器
超文字傳輸協議 hypertext transfer protocol,http 是在網際網路上應用最為廣泛的一種網路協議。所有的www伺服器都基於該協議。http設計最初的目的是提供一種發布web頁面和接收web頁面的方法 http協議屬於應用層協議,是建立在tcp協議基礎之上的,http協議以客...
http協議(五)web伺服器
1 http1.1規範允許一台http伺服器搭建多個web站點。比如提供web託管服務的 商,可以用一台伺服器為多為客戶服務,也可以以每位客戶持有的網域名稱執行各自不同的 這裡利用了虛擬伺服器的功能。客戶端使用http協議訪問伺服器時,會經常採用類似www.baidu.con這樣的主機名和網域名稱 ...
web伺服器 HTTP協議基礎
1.http協議 一種規範和約定,實現客戶端和伺服器的通訊 2.http請求格式 請求行 請求頭 請求體 請求行 method request uri http version 方法 請求的資源位址 http版本 請求頭 accept 指瀏覽器或其他客戶可以接愛的mime檔案格式。servlet可以...