JavaSE——網路編程基礎知識

来源:http://www.cnblogs.com/linlin0/archive/2016/12/15/6185270.html
-Advertisement-
Play Games

電腦網路的分類: 區域網(LAN) 指在一個較小地理範圍內的各種電腦網路設備互聯在一起的通信網路,可以包括一個或多個子網,通常局限在幾千米的範圍之內。 城域網(MAN) 主要由城域範圍內的各個區域網之間互連構成。 廣域網(WAN) 由距離較遠的區域網與城域網互聯構成的通信網路,通常是除了電腦設 ...


電腦網路的分類: 

區域網(LAN)

  指在一個較小地理範圍內的各種電腦網路設備互聯在一起的通信網路,可以包括一個或多個子網,通常局限在幾千米的範圍之內。

城域網(MAN)

  主要由城域範圍內的各個區域網之間互連構成。

廣域網(WAN)

  由距離較遠的區域網與城域網互聯構成的通信網路,通常是除了電腦設備以外,還要涉及一些電信通信方式。

OSI分層模型:

應用層
表示層
會話層
傳輸層
網路層
數據鏈路層
物理層

TCP/IP分層模型:

應用層
傳輸層
網路層
物理層+數據鏈路層

IP地址和埠號:

  IP地址用來標誌網路中的一個通信實體,這些通信實體可以是一臺主機,一臺印表機或者路由器的某一個埠。

  IP地址被分成A、B、C、D、E五類:

  A類:10.0.0.0~10.255.255.255

  B類:172.16.0.0~172.31.255.255

  C類:192.168.0.0~192.168.255.255

  埠是一個16位的整數,用來表示數據交給那個通信實體處理。因此,埠是通信程式與外界交流的出入口,它是一綜抽象的軟體結構,包括一些數據結構和I/O緩衝區。埠號可以是0~65535,通常被分為三類:

  公認埠:0~1023

  註冊埠:1024~49151

  動態/私有埠:49152~65535

TCP/IP協議:

  傳輸控制協議/網間協議。

  定義主機如何連入英特網及數據如何在他們之間傳輸的標準。

TCP握手協議:

    服務端與客戶端建立連接協議(三次握手)

  客戶端發送一個帶SYN(synchronize 即握手信號)標誌的TCP報文到伺服器,這是三次握手中的報文一;

  服務端回應客戶端的,這是三次握手中的第二個報文,這個報文同時帶ACK(Acknowledgement 中文譯為”確認字元“。它的作用是確認發來的數據已經接受無誤)標誌,表示對剛纔客戶端SYN報文的回應;同時有標誌SYN給客戶端,詢問客戶端是否準備好進行數據通訊。

  客戶端此時會再次回應服務端一個ACK保溫,這是報文段三。

  

  完成三次握手,客戶端與服務端開始傳送數據。

  

  連接終止協議(四次揮手)

  由於TCP連接是全雙工的,因此每個方向都必須單獨進行關閉,這原則是當一方完成他的數據發送任務後就能發送一個FIN來終止這個方向上的連接,收到一個FIN只意味著這一方向上沒有數據流動,一個TCP連接在收到一個FIN後仍能發送數據,首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

 

  TCP客戶端發送一個FIN,用來關掉客戶端到伺服器的數據傳送(報文段4);

  伺服器收到這個FIN,它發揮一個ACK,確認序號為收到的序號加一(報文段5),和SYN一樣,一個FIN將占用一個序號。

  伺服器關閉客戶端的連接,發送一個FIN給客戶端(報文6);

  客戶端發回ACK報文表示確認,並將確認序號設置為收到的序號加一(報文段7)。

 

  連接終止過程中的四個狀態:

  FIN_WAIT_1:server 端主動要求關閉TCP連接,並且主動發送FIN後,等待cliect端回覆ACK的狀態,對於client來說,即等待接受FIN報文的狀態。

  FIN_WAIT_2:當client端回覆 ACK報文後進入的狀態。一般情況下,客戶端一旦收到FIN報文就會立刻回覆ACK,所以FIN_WAIT_1狀態比較少見。

  TIME_WAIT:主動關閉的一方在完成自身發起的關閉請求後(即斷開連接),接收到被動一方的FIN後進入的狀態。

  CLOSE_WAIT:被動關閉方此時正等待上層應用發出關閉連接指令。

 

 

 

 

 

 

  

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近深圳突然降溫,身體不適感冒發燒,各種不舒服,故請假休息一天,我是個閑不下來的人,這麼好的時光豈能浪費,抄起筆記本,年終總結走起來。 今年是我的幸福年,主要體現在兩個方面:愛情、工作。 割 1.愛情 作為一個對家庭對愛情專一的北方男人(河北邢台人士),2014年畢業後,為了維持美好的校園愛情放棄了 ...
  • 由於第一次寫博客,寫的不好的地方,還請各位大神多多指點, 講解一下:xml動態插入數據並保存,寫這個時候費了我不少勁,最後終於皇天不負有心人讓我搞出來了,特意分享給大家,寫的不完美的地方還請大家多多指點 資料庫表結構 Categoryid GUid自動生成 CategoryName 分類名稱Cate ...
  • ASP.NET Core 中間件(Middleware)Diagnostics使用。對於中間件的介紹可以查看之前的文章ASP.NET Core 開發-中間件(Middleware)。 Diagnostics中間件,主要功能是用於報告和處理ASP.NET Core中的異常和錯誤信息,以及診斷Entit ...
  • 在日常的開發中,運行定時任務基本上已經是很普遍的需求了,可以通過windows服務+timer組件來實現,也可以使用第三方框架來集成,Quartz.NET就是一款從JAVA的Quartz移植過來的一個不錯的作業調度組件,但是當我們把作業都寫好,並部署完成的時候,管理成為了很麻煩的事情,因此我基於Qu ...
  • 今日問題: 請問主程式輸出結果是什麼?(點擊以下“【Java每日一題】20161216”查看20161215問題解析) 題目原發佈於公眾號、簡書:【Java每日一題】20161216,【Java每日一題】20161216 註:weknow團隊近期開通並認證了分答,歡迎大家收聽,有問題也歡迎到分答來咨 ...
  • 本文面向php語言的laravel框架的用戶,介紹一些laravel框架裡面容器管理方面的使用要點。文章很長,但是內容應該很有用,希望有需要的朋友能看到。php經驗有限,不到位的地方,歡迎幫忙指正。 1. laravel容器基本認識 laravel框架是有一個容器框架,框架應用程式的實例就是一個超大 ...
  • 我要寫幾篇隨筆,為準備學習Java作為自己第一門電腦編程語言的同學總結我認為必需、但在一般的Java教材/課程中並不教授的預備知識。但我並不教你Java本身。我(但願可以)幫你弄明白隨便一本Java教材第一章第一節講的“標準版”、“企業版”、“虛擬機”、“垃圾回收”是什麼。理想的讀者是中學生、家庭 ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...