應用層(重要寫**)
協議:是雙方的一種約定
報頭:http協議(超文字傳輸協議)
urlencode:特殊字元的編碼
urldecode:編碼之後的解碼
http抓包
http常見header:
cookie:儲存身份標識,避免重複登入,存字串,儲存資料有限(4k)
post:有body
get:沒body
referer:當前頁面是從哪個頁面跳轉過來的,通過公升級成https來解決修改referer問題
location:告訴接下來要去哪個頁面,搭配3xx使用
set_cookie:儲存身份資訊,下次訪問此網路是就不需要在登入
http狀態碼(響應結果如何):
2開頭:成功
3開頭:重定向(302重定向到其他頁面)
4開頭:客戶端異常(例404,418(彩蛋))
5開頭:伺服器異常(504(閘道器超時))
http請求(客戶端發給伺服器)
首行:方法+url+http版本號
header:請求屬性 冒號空格鍵值對
由空行結束
body:空行後面的都是body
http響應(伺服器回發給客戶端)
首行:http版本號 +狀態碼 +對狀態碼的含義補充
header:鍵值對
空行表示header結束
body:空行後面都是body
寫乙個最簡易版本的http伺服器
//不管什麼請求,響應都是hello world
#include #include #include #include #include #include #include #include //其實可以使用c++多型來解決類似問題
typedef struct sockaddr sockaddr;//通用形式
typedef struct sockaddr_in sockaddr_in;//儲存真正的ip位址和埠號
int serverinit(const char *ip,short port)
sockaddr_in addr;
addr.sin_family = af_inet;
addr.sin_addr.s_addr = inet_addr(ip);
addr.sin_port = htons(port);
socklen_t len = sizeof(addr);
int ret = bind(fd,(sockaddr *)&addr,len);
if(ret < 0)
ret = listen(fd,5);
if(ret < 0)
return fd;
}void *threadentry(void *arg)
; read(new_fd,buf,sizeof(buf)-1);
printf("[request] %s\n",buf);
//構造http的響應
//首行
//字串拼出來啥樣頁面就是啥樣
//多執行緒版本
while(1)
pthread_t tid;
pthread_create(&tid,null,threadentry,(void *)new_fd);
pthread_detach(tid);
} return 0;
}
應用層協議:http,https,ftp,ssh......,還有自定製的協議,序列化與反序列化
傳輸層(問題除錯)
埠號埠號範圍劃分
0-1023:知名埠號,一些知名的應用層協議http,ftp等都有固定的埠號
1024-65535:作業系統動態分配的埠號
知名的埠號
乙個程序可以繫結多個埠號,建立多個程序就可以同時繫結多個埠號了
乙個埠號不能被多個程序繫結
(易考)檢視程序的pid
ps aux | grep 程序名:檢視程序的pid
pidof 程序名
(易考)給乙個埠號檢視繫結的程序:
netstat -anp | grep 埠號
udp協議
udp協議端格式
教科書格式
通用格式
網路基礎(二)
關於internet的描述中 正確的是 是乙個物聯網 2.是乙個資訊資源網 rip和ospf的描述中 正確的是 1.rip採用向量 距離演算法2.ospf採用鏈路 狀態演算法 3.ospf通常比rip收斂快4.rip中的距離以跳數計算 提高網域名稱解析效率的方法可以為 1.從本地網域名稱伺服器中開始...
網路程式設計基礎《二》
一 通訊基礎 1.tcp通訊流程 伺服器呼叫socket bind listen 完成初始化後,呼叫accept 阻塞等待,處於監聽埠的狀態,客戶端呼叫socket 初始化後,呼叫connect 發出syn段並阻塞等待伺服器響應,伺服器應答乙個syn ack段,客戶端接收到後從connect 返回,...
Linux網路程式設計基礎 二
1 位元組轉換函式 在網路上面有著許多態別的機器,這些機器在表示資料的位元組順序是不同的,比如i386晶元是低位元組在記憶體位址的低端,高位元組在高階,而alpha晶元卻相反.為了統一起來,在linux下面,有專門的位元組轉換函式.unsigned long int htonl unsigned l...