一、應用層:(上層)決定傳送什麼東西。 (: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位,再加...