国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議

這篇具有很好參考價(jià)值的文章主要介紹了linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、HTTP協(xié)議

在上篇文章中我們模擬了一個(gè)應(yīng)用層協(xié)議,HTTP(超文本傳輸協(xié)議)就是其中之一。http就是通過(guò)http協(xié)議從服務(wù)器上讀取對(duì)應(yīng)的“資源”,這里所說(shuō)的資源是在網(wǎng)絡(luò)上看到的一切都可以看成資源文件;訪問(wèn)資源就是根據(jù)路徑,從服務(wù)器磁盤上拿取資源

二、URL

平時(shí)我們俗稱的 “網(wǎng)址” 其實(shí)就是說(shuō)的 URL
linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議

2.1 urlencode和urldecode

像 / ? : 等這樣的字符, 已經(jīng)被url當(dāng)做特殊意義理解了. 因此這些字符不能隨意出現(xiàn).
比如, 某個(gè)參數(shù)中需要帶有這些特殊字符, 就必須先對(duì)特殊字符進(jìn)行轉(zhuǎn)義.
轉(zhuǎn)義的規(guī)則如下:
將需要轉(zhuǎn)碼的字符轉(zhuǎn)為16進(jìn)制,然后從右到左,取4位(不足4位直接處理),每2位做一位,前面加上%,編碼成%XY,如下圖
linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議

三、HTTP協(xié)議格式

linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議
細(xì)節(jié)問(wèn)題;

  1. 請(qǐng)求和響應(yīng)怎么保證應(yīng)用層完整讀取完畢
    a.讀取完整的一行
    b. while(每次讀取完整的一行);將所有的請(qǐng)求行和請(qǐng)求報(bào)頭全部讀完,直到空行!
    c.報(bào)頭有一個(gè)屬性:Content-Length:得到正文長(zhǎng)度
    d.解析出來(lái)內(nèi)容長(zhǎng)度,根據(jù)內(nèi)容長(zhǎng)度,讀取正文即可
  2. 請(qǐng)求和響應(yīng)是怎么做到序列化和反序列化的?
    a.http自己根據(jù)特殊字符(\r\n)實(shí)現(xiàn)的,序列化的時(shí)候挨個(gè)進(jìn)入流里,反序列化以\r\n作為分隔符
    b.正文不需要

3.1 HTTP請(qǐng)求方法

方法 說(shuō)明 支持版本
GET 獲取資源 1.0/1.1
POST 傳輸實(shí)體主體 1.0/1.1

二者區(qū)別:

linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議

get:通過(guò)url傳遞參數(shù),具體如上圖,這也注定傳遞的參數(shù)不能太大
post:提交參數(shù)通過(guò)http請(qǐng)求的正文提交參數(shù),一般用戶看不到,私密性很好不等于安全性;正文可以很大,也可以是其他東西

3.2 HTTP狀態(tài)碼

HTTP狀態(tài)碼是由服務(wù)器返回給客戶端的三位數(shù)字代碼,用于表示客戶端請(qǐng)求的處理狀態(tài)。以下是常見(jiàn)的HTTP狀態(tài)碼及其描述:

  • 1xx(信息性狀態(tài)碼):表示請(qǐng)求已被接收,繼續(xù)處理。

  • 2xx(成功狀態(tài)碼):表示請(qǐng)求已成功被服務(wù)器接收、理解、并接受。
    200 OK:請(qǐng)求成功。

  • 3xx(重定向狀態(tài)碼):客戶端發(fā)送請(qǐng)求,服務(wù)器返回3XX狀態(tài)碼和一個(gè)新的URL,客戶端拿著這個(gè)新的URL再次請(qǐng)求服務(wù)器,這就是重定向。
    301 Moved Permanently:永久性重定向。
    302 Found:臨時(shí)性重定向。
    307 Temporary Redirect 臨時(shí)重定向,同302

  • 4xx(客戶端錯(cuò)誤狀態(tài)碼):表示客戶端請(qǐng)求出錯(cuò),服務(wù)器無(wú)法處理請(qǐng)求。
    404 Not Found:服務(wù)器無(wú)法找到請(qǐng)求的資源。(屬于客戶端錯(cuò)誤,客戶端請(qǐng)求資源在服務(wù)器不存在)

  • 5xx(服務(wù)器錯(cuò)誤狀態(tài)碼):表示服務(wù)器處理請(qǐng)求出錯(cuò)。
    500 Internal Server Error:服務(wù)器內(nèi)部錯(cuò)誤。

這里重點(diǎn)說(shuō)一下重定向
linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議
永久重定向:新舊網(wǎng)站,如果有人訪問(wèn)舊網(wǎng)站,會(huì)自動(dòng)調(diào)到新網(wǎng)站
臨時(shí)重定向:

std::string respline = "HTTP/1.1 307 Temporary Redirect\r\n";//臨時(shí)重定向狀態(tài)行

// 搭配響應(yīng)報(bào)頭重定向到指定頁(yè)面
respheader += "Location: https://mp.csdn.net/?spm=1030.2200.3001.8539\r\n";

3.3 HTTP響應(yīng)報(bào)頭

HTTP協(xié)議常見(jiàn)的響應(yīng)報(bào)頭包括:

  1. Content-Type: 數(shù)據(jù)類型(text/html等)
  2. Content-Length: 正文的長(zhǎng)度
  3. Host: 客戶端告知服務(wù)器, 所請(qǐng)求的資源是在哪個(gè)主機(jī)的哪個(gè)端口上;
  4. User-Agent: 聲明用戶的操作系統(tǒng)和瀏覽器版本信息;
  5. referer: 當(dāng)前頁(yè)面是從哪個(gè)頁(yè)面跳轉(zhuǎn)過(guò)來(lái)的;
  6. Location: 搭配3xx狀態(tài)碼使用, 告訴客戶端接下來(lái)要去哪里訪問(wèn)(上述重定向);
  7. Set-Cookie: 是一個(gè)函數(shù),由服務(wù)器向?yàn)g覽器發(fā)出響應(yīng)
  8. cookie是服務(wù)器發(fā)送給瀏覽器的變量

四、結(jié)合代碼理解HTTP通信流程

完整版代碼參考我的碼云
一、服務(wù)器收到請(qǐng)求,調(diào)用處理方法HandlerHttp

void HandlerHttp(int sock)
{
    char buffer[4096];
    HttpRequst req;
    HttpResponse resp;
    //讀取請(qǐng)求
    size_t n=recv(sock,buffer,sizeof(buffer)-1,0);
    if(n>0)
    {
        buffer[n]=0;
        req.inbuffer=buffer;
        
        req.parse();
        func_(req,resp);
        send(sock,resp.outbuffer.c_str(),resp.outbuffer.size(),0);
    
    }
}

二、函數(shù)內(nèi)部開始執(zhí)行相應(yīng)操作:

  1. 讀取請(qǐng)求并放入緩沖區(qū),將緩沖區(qū)數(shù)據(jù)賦值給請(qǐng)求類對(duì)象的成員inbuffer;
  2. 調(diào)用請(qǐng)求類的parse()函數(shù),parse函數(shù)調(diào)用工具類中的getOneLine方法讀取到請(qǐng)求行內(nèi)容,將讀取內(nèi)容反序列化到成員變量中,得到請(qǐng)求方法,URL,版本號(hào)
//Protocol.hpp
#pragma once

#include <iostream>
#include <string>
#include <sstream>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include "Util.hpp"

const std::string sep = "\r\n";
const std::string default_root = "./wwwroot";
const std::string home_page = "index.html";
const std::string html_404 = "wwwroot/404.html";

class HttpRequst
{
public:
    HttpRequst() {}
    ~HttpRequst() {}
    
    void parse()
    {
        // 1.從inbuffer中拿到第一行,分隔符\r\n
        std::string line = Util::getOneLine(inbuffer, sep);
        if (line.empty())
            return;
        
        // 2.從請(qǐng)求行提取三個(gè)字段
            //2.1 /aa.py?name=zhangsan&pwd=123
            //通過(guò)?將左右分離
            //post自動(dòng)分離,get需要手動(dòng)分離  
            //左邊:PATH 右邊parm 
        std::stringstream ss(line);
        ss >> method >> url >> httpversion;
        // 3.添加web默認(rèn)路徑
        //客戶端所有請(qǐng)求路徑前都會(huì)被加上./wwwroot前導(dǎo)目錄字符串
        path = default_root;              // ./wwwroot
        path += url;                      //./wwwroot/a.html
        //如果請(qǐng)求的是web根目錄/,默認(rèn)路徑改為./wwwroot/index.html
        if (path[path.size() - 1] == '/') // 默認(rèn)路徑,
            path += home_page;

        // 4.獲取path對(duì)應(yīng)的后綴
        auto pos = path.rfind(".");
        if (pos == std::string::npos)
            suffix = ".html";
        else
            suffix = path.substr(pos);
        // 5.根據(jù)路徑獲取獲取正文大小【即客戶端請(qǐng)求資源的大小】
        struct stat st;
        int n = stat(path.c_str(), &st);
        if (n == 0)
            size = st.st_size;
        else
            size = -1;
    }

public:
    std::string inbuffer;

    std::string method;      // 請(qǐng)求方式
    std::string url;         // 網(wǎng)址
    std::string httpversion; // 版本號(hào)
    std::string path;        // 路徑
    std::string suffix;      // 后綴

    int size;//資源大小
};

class HttpResponse
{
public:
    std::string outbuffer;
};
  1. 回調(diào)函數(shù),調(diào)用提供的Get方法:
    a.先打印出服務(wù)端所讀取到的完整內(nèi)容inbuffer;再挨個(gè)打印不同的屬性
    b.手動(dòng)編寫狀態(tài)行respline;
    c.構(gòu)建響應(yīng)報(bào)頭,多個(gè){key:value}組合而成,包括Content-Type,Content-Length;Set-Cookie
    d.構(gòu)建空行respblank
    e.調(diào)用工具類方法readFile(),通過(guò)文件路徑找到文件,以二進(jìn)制的方式將數(shù)據(jù)讀取到body正文里面
    c.將以上內(nèi)容添加到響應(yīng)類的成員變量outbuffer
//根據(jù)訪問(wèn)資源后綴,選擇不同的數(shù)據(jù)類型
std::string suffixToDesc(const std::string suffix)
{
    std::string ct = "Content-Type: ";
    if (suffix == ".html")
        ct += "text/html";
    else if (suffix == ".jpg")
        ct += "application/x-jpg;image/jpeg";

    ct += "\r\n";
    return ct;
}

// 1.服務(wù)器與網(wǎng)頁(yè)分離
// 2.url中的/是web根目錄,不是linux的根目錄
// 3.正確的給客戶端返回資源類型,根據(jù)后綴辨別
bool Get(const HttpRequst &req, HttpResponse &resp)
{
    cout << "----------------------http start---------------------------" << endl;
    cout << req.inbuffer << endl;
    std::cout << "method: " << req.method << std::endl;
    std::cout << "url: " << req.url << std::endl;
    std::cout << "httpversion: " << req.httpversion << std::endl;
    std::cout << "path: " << req.path << std::endl;
    std::cout << "suffix: " << req.suffix << std::endl;
    std::cout << "size: " << req.size << "字節(jié)" << std::endl;
    cout << "----------------------http end---------------------------" << endl;

    std::string respline = "HTTP/1.0 200 OK\r\n"; // 狀態(tài)行
    
    // std::string respline = "HTTP/1.1 307 Temporary Redirect\r\n";//臨時(shí)重定向

    std::string respheader = suffixToDesc(req.suffix); // 根據(jù)后綴編寫響應(yīng)報(bào)頭
    
    //添加cookie
    respheader += "Set-Cookie: name=1234567abcdefg; Max-Age=120\r\n";
    // 重定向到指定頁(yè)面
    // respheader += "Location: https://mp.csdn.net/?spm=1030.2200.3001.8539\r\n";
    
    std::string respblank = "\r\n"; // 空行

    std::string body; // 正文
    body.resize(req.size + 1);
    // 根據(jù)訪問(wèn)文件路徑,讀取文件內(nèi)容放到body里
    if (!Util::readFile(req.path, (char *)body.c_str(), req.size))
    {
        Util::readFile(html_404, (char *)body.c_str(), req.size); // 讀不到返回404
    }

    respheader += "Content-Length: "; // 正文部分大小
    respheader += std::to_string(body.size());
    respheader += "\r\n";

    resp.outbuffer += respline;
    resp.outbuffer += respheader;
    resp.outbuffer += respblank;
    cout << "-----------------http response stat-----------" << endl;
    cout << resp.outbuffer << endl;
    cout << "-----------------http response end-----------" << endl;
    resp.outbuffer += body;

    return true;
}
  1. 發(fā)送給客戶端

五、長(zhǎng)連接

訪問(wèn)一個(gè)網(wǎng)頁(yè),網(wǎng)頁(yè)中包含多個(gè)元素,需要多次發(fā)起http請(qǐng)求,但是http請(qǐng)求是基于tcp的,tcp又是面向連接的,存在頻繁創(chuàng)建問(wèn)題;為了減少連接次數(shù),需要客戶端和服務(wù)器均支持長(zhǎng)鏈接:建立一條連接,傳輸一份大的資源通過(guò)同一條連接完成。

Connection: keep-alive//開啟長(zhǎng)連接
Connection: close//關(guān)閉長(zhǎng)連接

六、http會(huì)話保持-Cookie和session

會(huì)話保持:當(dāng)我們登錄一個(gè)網(wǎng)頁(yè)的時(shí)候,短時(shí)間內(nèi)再打開是不需要再次輸入賬號(hào)密碼的;在同一個(gè)網(wǎng)站發(fā)生頁(yè)面跳轉(zhuǎn),瀏覽器會(huì)記住上一次登錄的信息,也不需要重新登陸,這就是會(huì)話保持。

http是無(wú)狀態(tài)的:他不會(huì)記錄歷史曾經(jīng)訪問(wèn)過(guò)的請(qǐng)求;但是用戶需要,所以瀏覽器為了滿足用戶的使用需求,做了相應(yīng)的工作(緩存)。

用戶在首次輸入賬號(hào)和密碼時(shí),瀏覽器會(huì)將賬號(hào)密碼進(jìn)行保存(Cookie技術(shù)),近期再次訪問(wèn)同一個(gè)網(wǎng)站,瀏覽器會(huì)自動(dòng)將用戶信息推送給服務(wù)器。這樣就變成了服務(wù)器與瀏覽器進(jìn)行交互,客戶只要關(guān)心的只有登錄一次短期內(nèi)不登錄了

新方案中,服務(wù)器會(huì)對(duì)每個(gè)用戶創(chuàng)建一份獨(dú)有的session文件,并且有唯一標(biāo)識(shí)該文件的session id,并將其返回給瀏覽器,瀏覽器會(huì)把session id保存。但這樣只能保證服務(wù)端存儲(chǔ)的賬號(hào)密碼不會(huì)被泄漏,黑客利用木馬盜取了用戶的session id后仍可以非法登錄,只能靠服務(wù)端的安全策略保障安全。
例如賬號(hào)被異地登錄了,服務(wù)端察覺(jué)后只要讓session id失效即可,一定程度保證了安全。
linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議
session工作原理
linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議

Cookie和session區(qū)別

1)對(duì)象不同
cookie:是針對(duì)每個(gè)網(wǎng)站的信息,每個(gè)網(wǎng)站只能對(duì)應(yīng)一個(gè),其他網(wǎng)站無(wú)法訪問(wèn),這個(gè)文件保存在客戶端,每次您撥打相應(yīng)網(wǎng)站,瀏覽器都會(huì)查找該網(wǎng)站的 cookies,如果有,則會(huì)將該文件發(fā)送出去。cookies文件的內(nèi)容大致上包括了諸如用戶名、密碼、設(shè)置等信息。

session:是針對(duì)每個(gè)用戶的,只有客戶端才能訪問(wèn),程序?yàn)樵摽蛻籼砑右粋€(gè) session。session中主要保存用戶的登錄信息、操作信息等等。此 session將在用戶訪問(wèn)結(jié)束后自動(dòng)消失(如果也是超時(shí))。

2)存儲(chǔ)數(shù)據(jù)大小不同
cookie:?jiǎn)蝹€(gè)cookie保存的數(shù)據(jù)<=4KB,一個(gè)站點(diǎn)最多保存20個(gè)Cookie。
session:session存儲(chǔ)在服務(wù)器上可以任意存儲(chǔ)數(shù)據(jù)。當(dāng) session存儲(chǔ)數(shù)據(jù)太多時(shí),服務(wù)器可選擇進(jìn)行清理。

3)生命周期不同
cookie:Cookie可以設(shè)置一個(gè)過(guò)期時(shí)間,可以是一段時(shí)間后或在固定日期之后過(guò)期。當(dāng)Cookie過(guò)期時(shí),瀏覽器會(huì)將其刪除

session:session依賴于名為JSESSIONID的cookie,而cookie JSESSIONID的過(guò)期時(shí)間默認(rèn)為-1,只需關(guān)閉窗口該session就會(huì)失效,因而session不能達(dá)到長(zhǎng)期有效的效果

4)存儲(chǔ)位置不同
cookie:cookie數(shù)據(jù)保存在客戶端。

session:session數(shù)據(jù)保存在服務(wù)器端。

5)數(shù)據(jù)類型不同
兩者都是key-value結(jié)構(gòu),但針對(duì)value的類型是有差異的。

cookie:value只能是字符串類型。

session:value是object類型。

6)安全性不同
cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙,如果主要考慮到安全應(yīng)當(dāng)使用session。

七、postman和fiddler

postman:能夠模擬客戶端瀏覽器的行為

fiddler:一個(gè)本地抓包工具,作為http調(diào)試使用,能夠明文抓到本地的POST方法請(qǐng)求正文!

linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-465078.html

到了這里,關(guān)于linux【網(wǎng)絡(luò)編程】之HTTP協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python中的網(wǎng)絡(luò)編程Socket與HTTP協(xié)議的實(shí)踐【第158篇—網(wǎng)絡(luò)編程】

    Python中的網(wǎng)絡(luò)編程Socket與HTTP協(xié)議的實(shí)踐【第158篇—網(wǎng)絡(luò)編程】

    前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家?!军c(diǎn)擊進(jìn)入巨牛的人工智能學(xué)習(xí)網(wǎng)站】。 在當(dāng)今互聯(lián)網(wǎng)時(shí)代,網(wǎng)絡(luò)編程是程序員不可或缺的一項(xiàng)技能。Python作為一種高級(jí)編程語(yǔ)言,提供了豐富的網(wǎng)絡(luò)編程庫(kù),使得開發(fā)者能夠輕松地

    2024年04月09日
    瀏覽(22)
  • 【Java網(wǎng)絡(luò)編程】HTTP超文本傳輸協(xié)議

    【Java網(wǎng)絡(luò)編程】HTTP超文本傳輸協(xié)議

    ? ? HTTP 全稱為 Hyper Text Transfer Protocol 超文本傳輸協(xié)議,它是基于 TCP 傳輸協(xié)議構(gòu)建的應(yīng)用層協(xié)議,作為支撐萬(wàn)維網(wǎng) www 的核心協(xié)議,為了保證其效率及處理大量事務(wù)的能力,因此在設(shè)計(jì)時(shí), HTTP 被制定成為一種無(wú)狀態(tài)協(xié)議,也就是說(shuō): HTTP 本身不會(huì)對(duì)發(fā)送過(guò)的請(qǐng)求和相應(yīng)的通

    2024年04月09日
    瀏覽(20)
  • 學(xué)習(xí)網(wǎng)絡(luò)編程N(yùn)o.8【應(yīng)用層協(xié)議之HTTP】

    學(xué)習(xí)網(wǎng)絡(luò)編程N(yùn)o.8【應(yīng)用層協(xié)議之HTTP】

    北京時(shí)間:2023/10/9/13:03,一晃好多天過(guò)去了,9月14號(hào)的文章終于在昨天發(fā)出去了,也是許久沒(méi)有更文了,國(guó)慶放假期間由于各種原因,在王者峽谷和鏟子世界遨游的不亦樂(lè)乎,有待改善!目前面臨挑戰(zhàn)艱巨,問(wèn)題很多,在這個(gè)空窗期我們需要有一股強(qiáng)大的支撐作為動(dòng)力,畢竟

    2024年02月08日
    瀏覽(24)
  • Python中兩種網(wǎng)絡(luò)編程方式:Socket和HTTP協(xié)議

    本文分享自華為云社區(qū)《Python網(wǎng)絡(luò)編程實(shí)踐從Socket到HTTP協(xié)議的探索與實(shí)現(xiàn)》,作者:檸檬味擁抱。 在當(dāng)今互聯(lián)網(wǎng)時(shí)代,網(wǎng)絡(luò)編程是程序員不可或缺的一項(xiàng)技能。Python作為一種高級(jí)編程語(yǔ)言,提供了豐富的網(wǎng)絡(luò)編程庫(kù),使得開發(fā)者能夠輕松地實(shí)現(xiàn)各種網(wǎng)絡(luò)應(yīng)用。本文將介紹P

    2024年04月16日
    瀏覽(34)
  • python基于http的網(wǎng)絡(luò)通信和網(wǎng)站端口暴露;Python網(wǎng)絡(luò)編程之HTTP協(xié)議的python應(yīng)用

    HTTP(Hypertext Transfer Protocol)即超文本傳輸協(xié)議,是Web應(yīng)用程序使用的協(xié)議,在Web瀏覽器和Web服務(wù)器之間傳遞HTML頁(yè)面和數(shù)據(jù)。HTTP是基于TCP/IP協(xié)議來(lái)傳輸數(shù)據(jù)的,是一種無(wú)狀態(tài)的協(xié)議。 關(guān)鍵特點(diǎn): 支持客戶/服務(wù)器模式:Web瀏覽器作為HTTP客戶端通過(guò)URL向HTTP服務(wù)器發(fā)送HTTP請(qǐng)求,

    2024年02月04日
    瀏覽(28)
  • 【Linux網(wǎng)絡(luò)編程】HTTPS協(xié)議

    【Linux網(wǎng)絡(luò)編程】HTTPS協(xié)議

    喜歡的點(diǎn)贊,收藏,關(guān)注一下把! HTTPS 是什么 HTTPS 也是一個(gè)應(yīng)用層協(xié)議,是在 HTTP 協(xié)議的基礎(chǔ)上引入了?個(gè)加密層。 HTTP 協(xié)議內(nèi)容不管是GET還是POST都是按照文本的方式 明文傳輸 的,這就信息導(dǎo)致在傳輸過(guò)程中出現(xiàn)泄漏和被篡改的情況。所以在http和傳輸層直接添加一層軟件

    2024年04月15日
    瀏覽(29)
  • 【Linux網(wǎng)絡(luò)編程】HTTPS協(xié)議原理

    【Linux網(wǎng)絡(luò)編程】HTTPS協(xié)議原理

    HTTPS也是?個(gè)應(yīng)?層協(xié)議,是在HTTP協(xié)議的基礎(chǔ)上引?了?個(gè)加密層,HTTP協(xié)議內(nèi)容都是按照?本的?式明?傳輸?shù)模@就導(dǎo)致在傳輸過(guò)程中出現(xiàn)?些被篡改的情況。 加密就是把 明文 (要傳輸?shù)男畔ⅲ┙?jīng)過(guò)一系列的變換,變成 密文 進(jìn)行傳輸。 解密就是把 密文 在通過(guò)一系列的

    2024年02月07日
    瀏覽(16)
  • Linux 網(wǎng)絡(luò)編程學(xué)習(xí)筆記——一、TCP/IP 協(xié)議族

    Linux 網(wǎng)絡(luò)編程學(xué)習(xí)筆記——一、TCP/IP 協(xié)議族

    數(shù)據(jù)鏈路層實(shí)現(xiàn)了網(wǎng)卡接口的網(wǎng)絡(luò)驅(qū)動(dòng)程序,以處理數(shù)據(jù)在物理媒介(以太網(wǎng)、令牌環(huán)等)上的傳輸,不同的物理網(wǎng)絡(luò)具有不同的電氣特性,網(wǎng)絡(luò)驅(qū)動(dòng)程序隱藏了這些細(xì)節(jié),為上層協(xié)議提供一個(gè)統(tǒng)一的接口。最常用的協(xié)議是 ARP(Address Resolve Protocol,地址解析協(xié)議)和 RARP(

    2024年02月02日
    瀏覽(40)
  • linux【網(wǎng)絡(luò)編程】之HTTPS協(xié)議,一文了解HTTPS是如何保證通信安全的

    linux【網(wǎng)絡(luò)編程】之HTTPS協(xié)議,一文了解HTTPS是如何保證通信安全的

    在上篇文章中我們了解到什么事HTTP協(xié)議,HTTP協(xié)議內(nèi)容都是按照?本的?式明?傳輸?shù)?這就導(dǎo)致在傳輸過(guò)程中出現(xiàn)?些被篡改的情況,本期我們來(lái)探討一下HTTPS協(xié)議。 HTTPS( 超文本傳輸安全協(xié)議 )也是?個(gè)應(yīng)?層協(xié)議.是在HTTP協(xié)議的基礎(chǔ)上引?了?個(gè)加密層. HTTPS:默認(rèn)端口與

    2024年02月08日
    瀏覽(40)
  • 【Linux】TCP網(wǎng)絡(luò)套接字編程+協(xié)議定制+序列化和反序列化

    【Linux】TCP網(wǎng)絡(luò)套接字編程+協(xié)議定制+序列化和反序列化

    悟已往之不諫,知來(lái)者之可追。抓不住的就放手,屬于你的都在路上…… 1. 為了讓我們的代碼更規(guī)范化,所以搞出了日志等級(jí)分類,常見(jiàn)的日志輸出等級(jí)有DEBUG NORMAL WARNING ERROR FATAL等,再配合上程序運(yùn)行的時(shí)間,輸出的內(nèi)容等,公司中就是使用日志分類的方式來(lái)記錄程序的輸

    2024年02月08日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包