應用層資料傳遞之http協議

2021-12-30 02:38:53 字數 1983 閱讀 6603

一、應用層:(上層)決定傳送什麼東西。 (:80一般為預設的,省略) ,將網域名稱解析為ip+port(80),據此實現網路通訊。

二、自己寫伺服器作為應答報文段步驟

(1)獲取請求報文段

(2)解析請求報文段,拿到客戶請求的網頁名

(3)搜尋本伺服器,檢視請求網頁是否存在,如果不存在,返回404

(4)如果請求網頁存在,拼接應答報文段(由報頭和網頁內容組成)

**示例:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//1.獲取請求報文段

//2.解析請求報文段,拿到客戶請求的網頁名

//3.搜尋本伺服器,檢視那請求網頁是否存在,如果不存在,返回404

//4.如果請求網頁存在,拼接應答報文段。(應答報文段由報頭和網頁內容組成)

void main()

; int n=recv(c,recvbuff,1024,0);

if(n<=0)

//以普通使用者執行不了,因為是80埠,所以要切換到使用者su

//printf("%s\n",recvbuff);列印不顯示

//所以改為2.解析請求報文段

char *p=strtok(recvbuff," ");//做切割

if(p!=null)

//搜尋本伺服器

char path[128]="/var/www/html";

strcat(path,p);//var/www/html/login.html連線成這樣

int fd=open(path,o_rdonly);//以唯讀方式開啟html檔案

if(fd==-1)

;strcpy(sendbuff,"http/1.1 404 not found\r/n");//必須以/r/n結尾

;strcpy(sendbuff,"http/1.1 200 ok\r/n");//必須以/r/n結尾

fstat(fd,&st);//檢視檔案大小

sprintf(sendbuff+strlen(sendbuff),"%d",st.st_size);

strcat(sendbuff,"contend_type:text/html;charset=utf-8\r\n");

strcat(sendbuff,"\r\n");

//檔案中的資料

send(c,sendbuff,strlen(sendbuff),0);//發頭部資訊

memset(sendbuff,0,1024);

int n=0;

while(n=read(fd,sendbuff,1023)!=0)//獲取檔案中資料

close(fd);

}close(c);

}close(sock);

}

應用層協議 HTTP協議

認識url 我們平時說的 其實就是說的url。http請求 無狀態 並不會記錄當前使用者在訪問。https 加密協議 http常見header 分離報頭和有效載荷 正文 空行分離http的方法方法 說明支援的http協議版本 get 私密性不好 獲取資源 1.0 1.1 post 正文傳參 傳輸實體...

應用層協議 HTTP協議

應用層 http協議流程 2 找到伺服器的同時,會有http的請求傳送過來,告訴伺服器我求你做什麼?http協議規定了傳送請求的格式,這個格式有三部分組成請求行 首行,url 請求頭 header 請求體 body 3 請求資訊傳送至伺服器以後,伺服器會獲取傳遞過來的相關資訊進行後端程式的處理。一般...

應用層(HTTP協議)

應用層 負責應用程式之間的溝通 結構化傳輸協議 方便資料式的組織與解析 1.作用 傳輸檔案,網頁 採用tcp協議 tcp協議詳解 2.url 統一資源定位符 相對路徑是根目錄下的相對路徑 3.urlencode 編碼 和urldecode 解碼 乙個字元8位,前4位 編成1位,後4位 編成1位,再加...