九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
HTTP協(xié)議報文、工作原理及Java中的HTTP通信技術(shù)詳解

一、web及網(wǎng)絡(luò)基礎(chǔ)

      1、HTTP的歷史
           1.1、HTTP的概念:
                HTTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議)是一種通信協(xié)議,它允許將超文本標記語言(HTML)文檔從Web服務(wù)器傳送到客戶端的瀏覽器。
                它是一個應(yīng)用層協(xié)議,承載于TCP之上。由請求和響應(yīng)構(gòu)成,是一個標準的客戶端服務(wù)器模型
           1.2、HTTP的發(fā)展歷史:
                作為Web文檔傳輸協(xié)議的HTTP,它的版本更新十分緩慢,目前只更新了三個版本:
                HTTP/0.9:  1990年,并未建立標準
                HTTP/1.0:  1996年5月,
                HTTP/1.1:  1997年1月,目前主流的HTTP版本
           1.2、HTTP在Web應(yīng)用中的重要性:
                HTTP協(xié)議是整個Web基礎(chǔ),許多應(yīng)用都離不開對HTTP協(xié)議的認識:
                WebService = HTTP + XML
                Reset = HTTP + JSON
                各種API的實現(xiàn):HTTP + XML/JSON
                采集、小偷站
                QQ、迅雷等桌面應(yīng)用軟件
      2、網(wǎng)絡(luò)基礎(chǔ)TCP/IP協(xié)議
            2.1、協(xié)議的概念:
                 協(xié)議是指計算機通信網(wǎng)絡(luò)中,兩臺計算機進行通信,所必須遵循的規(guī)定或規(guī)則。
                 計算機網(wǎng)絡(luò)中有各種各樣的協(xié)議,比如TCP協(xié)議、IP協(xié)議、HTTP協(xié)議、FTP協(xié)議等等,像這樣把與互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集合起來,就成為TCP/IP協(xié)議族。
                 
            2.2、TCP/IP的分層管理
                 應(yīng)用層:負責處理特定的應(yīng)用程序,如FTP、DNS、HTTP等。
                 傳輸層:對上層應(yīng)用層提供處于網(wǎng)絡(luò)連接中兩臺計算機之間的數(shù)據(jù)連接。該層有兩種協(xié)議:TCP和UDP。
                 網(wǎng)絡(luò)層:處理網(wǎng)絡(luò)上流動的數(shù)據(jù)報。該層協(xié)議有:IP、ICMP、IGMP。
                 數(shù)據(jù)鏈路層:處理連接網(wǎng)絡(luò)的硬件部分。包括操作系統(tǒng)、硬件設(shè)備驅(qū)動、網(wǎng)卡、光纖等。
            2.3、TCP/IP通信傳輸流程
                 
      3、IP、TCP、DNS與HTTP的密切關(guān)系
            3.1、IP協(xié)議的概念與作用
                 IP(Internet Protocol),網(wǎng)際協(xié)議,位于網(wǎng)絡(luò)層
                 把各種數(shù)據(jù)包傳送給對方。最重要的兩個條件是IP地址和MAC地址(MAC地址基本不會改變,但可以通過軟件改變)
                 ARP地址解析協(xié)議:根據(jù)IP地址查出MAC地址
            3.2、TCP協(xié)議的概念與作用
                 TCP(Transmission Control Protocol),傳輸控制協(xié)議,位于傳輸層。
                 提供可靠的字節(jié)流服務(wù),通過三次握手策略
            3.3、TCP協(xié)議的三次握手過程
                 
            3.4、DNS的概念與作用
                 DNS(Domain Name System),域名解析系統(tǒng),位于應(yīng)用層。
                 提供域名到IP地址之間的解析服務(wù)
            3.5、HTTP與TCP、IP和DNS的關(guān)系
                 HTTP生成請求報文需要通過DNS解析出IP找到服務(wù)器,通過TCP傳輸請求。
      4、URI和URL的概念
            4.1、URI的概念:
                 URI(Uniform Resource Identifier),統(tǒng)一資源標識符,是一個用于標識某一互聯(lián)網(wǎng)資源名稱的字符串。
            4.2、URL的概念:
                 URL(Uniform Resource Location),統(tǒng)一資源定位符,它描述一臺特定服務(wù)器上某特定資源的特定位置。
            4.3、URI與URL的關(guān)系:
                 URI用字符串標識某一互聯(lián)網(wǎng)資源,而URL代表資源的地址,由此可見,URL是URI的子集。
                 URI由兩個主要的子集URL和URN構(gòu)成
            4.4、URI的格式,由9部分構(gòu)成              
                   
                  http:協(xié)議方案名,獲取資源是要指定協(xié)議類型
                user:pass:登錄信息(認證),指定用戶名和密碼,可選。
                  www.example.com:服務(wù)器地址
                  80:端口號,可選
                  /home/index.html:文件路徑
                  age=11:參數(shù)組件,為應(yīng)用程序提供訪問資源所需的附加信息
                  查詢字符串:針對已指定的文件路徑內(nèi)的資源,可以使用查詢字符串穿入任意參數(shù),可選(分頁case)
                  mask:片段標識符,通??蓸擞洺鲆勋@取資源中的子資源(文檔內(nèi)的某一個位置),可選
 
二、細說HTTP的報文格式和工作流程
      1、HTTP請求報文和響應(yīng)報文的格式
           1.1、HTTP事務(wù)和報文流的概念
                HTTP事務(wù) = 請求命令 + 響應(yīng)結(jié)果
                
           1.2、請求報文的格式(抓包工具,fiddler)
                請求行:   請求方式(大寫)    請求URL    版本
                請求首部: 名: 值
                空行:
                報文主體:
                請求首部也叫消息頭,其中字段名不區(qū)分大小寫,習慣駝峰式,字段可按任意順序排列,有些可接受多個值選項,有些字段可出現(xiàn)多次
                1.2.1、請求方式:GET、POST、HEAD、OPTIONS、DELETE、PUT
                                默認發(fā)GET請求,如在瀏覽器直接輸入地址訪問,點超鏈接訪問都是get,用戶如想把請求方式改為post,可通過更改表單的提交方式實現(xiàn)。POST與GET方式的區(qū)別:傳遞參數(shù)的方式;傳遞數(shù)據(jù)量大小
                1.2.2、常用請求頭:
                       Accept: 瀏覽器可接受的MIME類型  */* (大類型)/(小類型)
                       Accept-Charset:告訴服務(wù)器,瀏覽器支持哪種字符集
                       Accept-Encoding:瀏覽器能夠進行解碼的數(shù)據(jù)編碼方式,比如gzip
                       Accept-Language:瀏覽器所希望的語言種類
                       Host:初始URL中的主機和端口
                       Referer:包含一個URL,用戶從該URL代表的頁面發(fā)出訪問當前請求的頁面
                       Content-Type:內(nèi)容類型
                       If-Modified-Since:值為一個GMT標準時間,如果在該時間到目前,請求文件沒有更改,則服務(wù)器告訴瀏覽器可以直接從緩存中讀取文件
                       User-Agent:用戶的瀏覽器類型,操作系統(tǒng)等信息
                       Content-Length:表示請求消息正文的長度
                       Connection:如果值為Keep-Alive,表示需要持久連接,HTTP 1.1默認進行持久連接
                       Cookie:這是最重要的請求頭信息之一,但是由于該技術(shù)存在安全隱患等原因,該功能被Session取代
                       Date:值為GMT時間,表示請求時間
           1.3、響應(yīng)報文的格式 
                響應(yīng)行:   協(xié)議版本      狀態(tài)碼     原因短語
                響應(yīng)首部:
                空行:
                報文主體:
                1.3.1、狀態(tài)碼:用于表示服務(wù)器對請求的各種不同處理結(jié)果和狀態(tài),它是一個三位的十進制數(shù)。響應(yīng)狀態(tài)碼分為5類:
                       
                1.3.2、常用狀態(tài)碼:
                       200:正常
                       301:永久重定向  
                       302/307:臨時重定向
                       304:未修改,可以使用緩存,無需再次修改
                       404:資源找不到
                       500:服務(wù)器內(nèi)部錯誤
                       關(guān)于更多狀態(tài)碼,請參考博客:http響應(yīng)狀態(tài)碼大全
                1.3.3、常用響應(yīng)頭:
                       Location:http://cn.bing.com/ 指示新的資源位置
                       Server:apache tomcat 指示服務(wù)器的類型
                       Content-Encoding: gzip 服務(wù)器發(fā)送數(shù)據(jù)采用的編碼類型
                       Content-Length:80 告訴瀏覽器正文的長度
                       Content-Language:zh-cn 服務(wù)器發(fā)送的文本的語言
                       Content-Type:text/html;charset=GB2312 服務(wù)器發(fā)送內(nèi)容的MIME類型
                       Last-Modified:GMT時間 文件最后修改的時間
                       Refresh:1;url=http://www.baidu.com 指示客戶端刷新頻率,單位是秒
                       Content-Disposition:attachment;filename=aaa.zip 指示客戶端下載文件
                       Set-Cookie:SS=Q0=5Lb_nQ;path=/search 服務(wù)器發(fā)送的Cookie
                       Expires: GMT時間  表示過期時間,其值為0或-1表示禁止緩存
                       Cache-Control:no-cache(1.1) 表示進制緩存
                       Connection:close/Keep-Alive
                       Date: GMT時間
      2、HTTP的工作流程
            2.1、整個流程步驟
                 
            2.2、域名解析過程
                 
            2.3、三次握手過程
            2.4、發(fā)起HTTP請求
            2.5、響應(yīng)HTTP請求并得到HTML代碼
            2.6、瀏覽器解析HTML代碼
            2.7、瀏覽器對頁面進行渲染呈現(xiàn)給用戶
      3、HTTP1.0與HTTP1.1的區(qū)別
            3.1、HTTP1.0的基本運行方式:
                    一個事務(wù)分為四個過程:建立連接、瀏覽器發(fā)出請求信息、服務(wù)器發(fā)出響應(yīng)信息、關(guān)閉連接。每次連接只處理一個請求和響應(yīng)。對每一個文件的訪問,瀏覽器與服務(wù)器都要建立一次單獨的連接
            3.2、HTTP1.1的特點
                    在一個TCP連接上可以傳送鎖哥HTTP請求和響應(yīng)
                    多個請求和響應(yīng)過程可以重疊
                    增加了更多的請求頭和響應(yīng)頭,比如Host、If-Unmodified-Since請求頭等
      4、使用Telnet連接的實例
            Telnet協(xié)議是TCP/IP協(xié)議族中的一員,是Internet遠程登錄服務(wù)的標準協(xié)議和主要方式。為用戶提供了在本地計算機上完成遠程主機工作的能力。在終端電腦上使用telnet程序,用它連接到服務(wù)器
三、Java中的HTTP通信
      1、使用HTTP的Get方式讀取網(wǎng)絡(luò)數(shù)據(jù)
     
class ReadByGet extends Thread{    @Override    public void run(){        URL url = new URL("網(wǎng)址");//如果有參數(shù),在網(wǎng)址中攜帶參數(shù)        URLConnection conn = url.openConnection();        InputStream is = conn.getInputStream();        InputStreamReader isr = new InputStreamReader(is);        BufferedReader br = new BufferedReader(isr);                String line;        StringBuilder builder = new StringBuilder();        while((line=br.readLine())!=null){              builder.append(line);        }        br.close();        isr.cloae();        is.close();                System.out.println(builder.toString);    }}public static void main(String[] args){    new ReadByGet().start();} 

      2、使用HTTP的Post方式與網(wǎng)絡(luò)交互通信  

Class ReadByPost extends Thread{     @override     public void run(){         URL url = new URL("網(wǎng)址");         HttpURLConnection conn = (HttpURLConnection)url.openConnection();         conn.addRequestProperty("encoding","UTF-8");         conn.setDoInput(true);         Conn.setDoOutput(true);         conn.setRequestMethod("POST");                  OutputStream os = conn.getOutputStream();         OutputStreamWriter osw = new OutputStreamWriter(os);         BufferedWriter bw = new BufferedWriter(osw);                   bw.write("向服務(wù)器傳遞的參數(shù)");         bw.flush();                  InputStream is = conn.getInputStream();         InputStreamReader isr = new InputStreamReader(is);         BufferedReader br = new BufferedReader(isr);                  String line;         StringBuilder builder = new StringBuilder();         while((line = br.readLine())!=null){              builder.append(line);         }         //關(guān)閉資源         System.out.println(builder.toString);     }}public static void main(){     new ReadByPost().start();}

      
      3、使用HttpClient進行Get方式通信

            apache有一個HttpClient包
  1. class Get extends Thread{       HttpClient client = HttpClients.createDefault();    @Override    public void run(){                HttpGet get = new HttpGet("http://www.baidu.com");                  HttpResponse response = client.execute(get);         HttpEntity entity = response.getEntity();         String result = EntityUtils.toString(entity,"UTF-8");                  System.out.println(result);             }}public static void main(String[] args){    new Get().start();}


          4、使用HttpClient進行Post方式通信

 
class Post extends Thread{    HttpClient cilent = HttpClients.CreateDefault();    @Override    public void run(){        HttpPost post = new HttpPost("網(wǎng)址");        //設(shè)置要傳的參數(shù)        List<BasicNameValuePair> parameters = new ArratList();        parameters.add(new BasicNameValuePair("key","value"));                post.setEntity(new UrlEncodeFormEntity(parameters,"UTF-8"));        HttpResponse response = client.execute(post);        HttpEntity entity = response.getEntity();        String result = EntityUtils.roString(entity,"UTF-8");                System.out.println(result);            }}main(){    new Post().start();}



 



本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java程序員菜鳥進階(六)《HTTP權(quán)威指南》之HTTP相關(guān)概念詳解
我所理解的RESTful Web API [Web標準篇]
HTTP圖解
HTTP協(xié)議和XMPP協(xié)議
看完這篇HTTP,跟面試官扯皮就沒問題了
TCP/IP(七)之玩轉(zhuǎn)HTTP協(xié)議
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服