Socket

一、簡介

ipv4 ipv6
iPv4 中規(guī)定IP地址長度為32,即有2^32-1個地址;
IPv6 中IP地址的長度為128,即有2^128-1個地址。

  • IP地址(主機名)
    1、網絡中設備的標志;
    2、本地回環(huán)地址:127.0.0.1 ,主機名:localhost,測試:ping 127.0.0.1 ;

  • 端口號
    1、用于標記進程邏輯地址,不同進程的標志;
    2、有效端口:0~65535;
    3、其中0~1024系統使用或者保留端口,開發(fā)中不要使用1024以下的端口;

  • 傳輸協議(通訊規(guī)則)
    TCP/UDP

二、路由器IP地址 & 本機IP地址

  • 第一個是路由器分配給本機的IP地址;
  • 第二個是子網掩碼;
  • 第三個是路由器的IP地址;


    AAA

2.1、ping

如果同時Ping兩個IP地址一樣嗎?
-- ping 127.0.0.1
-- ping 192.168.0.95
結論:不一樣。如果ping 127.0.0.1 是自己ping自己;
ping 192.168.0.95 是將數據提交給路由器,路由器再反饋數據給本機;
應用:如果ping 127.0.0.1 不通,則果斷判斷出本機網卡出現問題,而不是網絡出現問題;

2.2、內網 和 外網

如何直接ping www.baidu.com可以通過,也獲得了百度的外網地址:180.97.33.107;
IP查詢網址:http://www.ip138.com

ping www.baidu.com
查詢IP

三、端口號Port

端口號與服務器IP關系示意圖

3.1、訪問服務器服務的協議(而不是直接通過Port)

協議

四、數據模型

物理層:將電流的高低電頻轉為二進制數據/將二進制數據轉為電流并傳輸;(中繼器:防止電流衰弱進行放大、中轉)
數據鏈路層:由于物理層連接是長期的,為了準確的獲取數據,彌補傳輸過程中可能的誤差,所以需要數據鏈路進行糾錯;定義傳輸的格式:標準幀格式;把二進制的數據打包成了標準的幀格式數據,


數據傳輸過程
參考模型

五、Socket

5.1、什么是socket

  • socket本質是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員做網絡開發(fā)所用的接口,這就是Socket編程接口;
  • socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用已實現進程在網絡中通信。(圖一)
  • HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發(fā)動機,提供了網絡通信的能力。
圖一:Socket與模型
各個協議與模型

5.2、Socket客戶端與服務器交互流程

Socket客戶端與服務器交互流程

六、socket實戰(zhàn)

demo : https://github.com/lionsom/Socket_Demo

  • 案例:socket連接IP:127.0.0.1 port:12345
// 終端
nc -lk 12345
// 作用:始終監(jiān)聽本地計算機12345端口的數據
  • 案例:利用socket向百度進行數據請求
    1、獲取百度IP
ping www.baidu.com

2、連接IP和port


如圖

七、拓展

7.1、TCP、UDP、HTTP、SOCKET之間的區(qū)別

  • IP:網絡層協議;
  • TCP和UDP:傳輸層協議;
  • HTTP:應用層協議;
  • SOCKET:TCP/IP網絡的API。
    TCP/IP代表傳輸控制協議/網際協議,指的是一系列協議。
    TCP和UDP使用IP協議從一個網絡傳送數據包到另一個網絡。把IP想像成一種高速公路,它允許其它協議在上面行駛并找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,文件傳輸協議FTP這樣的協議等。
    TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協議。雖然TCP和UDP都是用來傳輸其他協議的,它們卻有一個顯著的不同:TCP提供有保證的數據傳輸,而UDP不提供。這意味著TCP有一個特殊的機制來確保數據安全的不出錯的從一個端點傳到另一個端點,而UDP不提供任何這樣的保證。
    HTTP(超文本傳輸協議)是利用TCP在兩臺電腦(通常是Web服務器和客戶端)之間傳輸信息的協議??蛻舳耸褂肳eb瀏覽器發(fā)起HTTP請求給Web服務器,Web服務器發(fā)送被請求的信息給客戶端。
    記住,需要IP協議來連接網絡;TCP是一種允許我們安全傳輸數據的機制,,使用TCP協議來傳輸數據的HTTP是Web服務器和客戶端使用的特殊協議。
    Socket 接口是TCP/IP網絡的API,Socket接口定義了許多函數或例程,用以開發(fā)TCP/IP網絡上的應用程序。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容