【網絡編程】網絡編程基礎和Socket套接字

目錄

一. 網絡編程的概念

二. 網絡編程基礎知識

1)網卡

2)接收端和發送端

3)客戶端和服務器

4)請求和響應

?5)客戶端和服務器的交互模式

三. Socket 套接字模型


一. 網絡編程的概念

網絡編程?是通過編程實現不同進程之間數據交換和通信的技術。

  • 主機1向主機2發送網絡數據,主機1發送網絡資源(客戶端)主機2獲取網絡資源(服務器)
  • 如果是同一個主機,只要是不同的進程,基于網絡來傳輸數據,那么也屬于網絡編程

網絡編程的本質就是學習傳輸層提供給應用層的API,通過使用這些API,將數據交給傳輸層,經過層層封裝將數據通過網卡發送出去

二. 網絡編程基礎知識

1)網卡

網卡屬于計算機的硬件組件,將二進制數據轉換成適合傳輸的光電信號,并處理網絡協議的底層細節

2)接收端和發送端

接收端和發送端

發送數據的一方,稱為發送端

接收數據的一方,稱為接收端

3)客戶端和服務器

?客戶端和服務器

主動發起通信的一方,稱為客戶端

被動接受通信的一方,稱為服務器

同一個程序在不同的場景中,可能是客戶端也可能是服務器?

4)請求和響應

客戶端給服務器發送的數據,稱為請求

服務端給客戶端返回的響應,稱為響應?

?5)客戶端和服務器的交互模式

  • 一問一答(?一個請求對應一個響應)

客戶端給服務器發個請求,服務器給客戶端返回個響應(網站開發)

  • 一問多答 (一個請求對應多個響應)

客戶端發一個請求,服務器返回多個響應(下載文件)

  • 多問一答?(多個請求對應一個響應)

?客戶端發多個請求,服務器響應一個(上層文件)

  • 多問多答(多個請求對應多個響應)

?客戶端發送多個請求,服務器返回多個響應(遠程控制)


三. Socket 套接字模型

網絡編程主要使用系統API,這些API主要是由傳輸層提供,傳輸層主要有兩種協議:TCP和UDP

由于協議的不同,導致提供的API也不同?


?Socket套接字針對傳輸層協議分為了三類:

  1. 流套接字(使用傳輸層TCP協議)
  2. 數據報套接字(使用傳輸層UDP協議)
  3. 原始套接字

?傳輸層主要協議:TCP和UDP協議(重點!!!)

UDP:無連接,不可靠傳輸,面向數據報,全雙工

TCP:有鏈接,可靠傳輸,面向字節流,全雙工

1)有鏈接/無連接

有鏈接

  • 這里的連接并不是物理意義上的理解,而是抽象的連接
  • 連接的特點是必須雙方都認同,連接后才能傳輸數據(打電話)
  • 連接的本質就是使用一些數據結構去記錄對方的信息

無連接

  • ?不管你認不認同,數據都可以發送過去(發短信)

2) 可靠傳輸/不可靠傳輸

  • 這里的可靠傳輸不能保證數據百分之百到達接收端
  • 可靠傳輸:發送的數據是否送達,發送方可以感知到?

3)面向字節流/面向數據報

面向字節流(TCP):網絡中傳輸的基本單位是字節

面向數據報(UDP):網絡中傳輸的基本單位是數據報(由一系列字節組成)?

?4)全雙工/半雙工

全雙工:同一時刻,可以雙向通信

半雙工:同一時刻,只能單向通信


UDP數據報套接字模型


TCP流套接字模型?


點贊的寶子今晚自動觸發「躺贏錦鯉」buff!下一章詳細介紹UDP數據報套接字編程?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79052.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79052.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79052.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

盛水最多的容器問題詳解:雙指針法與暴力法的對比與實現

文章目錄 問題描述方法探討方法一:暴力法(Brute Force)思路代碼實現復雜度分析 方法二:雙指針法(Two Pointers)思路正確性證明代碼實現復雜度分析 方法對比總結 摘要 盛水最多的容器(Container …

圖論-BFS搜索圖/樹-最短路徑問題的解決

續上篇~圖論--DFS搜索圖/樹-CSDN博客 先看第一次學習的博客!!👇👇👇👇 👉 有一些問題是廣搜 和 深搜都可以解決的,例如島嶼問題,這里我們記dfs的寫法就好啦,…

C++進階——C++11_智能指針

目錄 1、問題引入 2、RAII和智能指針 3、C標準庫的智能指針 3.1 auto_ptr (不好) 3.2 unique_ptr 3.3 shared_ptr (重點) 3.4 weak_ptr (重點) 4、shared_ptr的循環引用問題(重點) 5、shared_ptr的線程安全問題 6、C11智能指針和boost的關系 7、內存泄漏 7.1 什么是…

數據庫的基本原則

數據庫的核心原則 原子性與持久性:原子性(Atomicity)確保一個事務中的所有操作要么全部完成,要么完全不執行,不會出現部分完成的情況。持久性(Durability)則保證一旦事務提交成功,即…

Java設計模式實戰:裝飾模式在星巴克咖啡系統中的應用

一、裝飾模式簡介 裝飾模式(Decorator Pattern)是一種結構型設計模式,它允許向一個現有的對象添加新的功能,同時又不改變其結構。這種模式創建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前…

使用MPI-IO并行讀寫HDF5文件

使用MPI-IO并行讀寫HDF5文件 HDF5支持通過MPI-IO進行并行讀寫,這對于大規模科學計算應用非常重要。下面我將提供C和Fortran的示例程序,展示如何使用MPI-IO并行讀寫HDF5文件。 準備工作 在使用MPI-IO的HDF5之前,需要確保: HDF5庫編譯時啟用…

七、自動化概念篇

自動化測試概念 自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。通常,在設計了測試用例并通過評審之后,由測試人員根據測試用例中描述的過程一步步執行測試,得到實際結果與期望結果的比較。在此過程中,為了節省人…

redis cluster 的通信機制

Redis Cluster 的通信機制是其分布式架構的核心,基于 Gossip 協議 和 Cluster Bus 實現節點間狀態同步與數據協調。以下是其通信機制的核心要點: 二進制協議:數據以字節流形式編碼(如Protobuf、Thrift、MQTT、Gossip)。…

CTF web入門之文件上傳

知識點 產生文件上傳漏洞的原因 原因: 對于上傳文件的后綴名(擴展名)沒有做較為嚴格的限制 對于上傳文件的MIMETYPE(用于描述文件的類型的一種表述方法) 沒有做檢查 權限上沒有對于上傳的文件目錄設置不可執行權限,(尤其是對于shebang類型的文件) 對于web server對于上傳…

PhotoShop學習09

1.彎曲鋼筆工具 PhotoShop提供了彎曲鋼筆工具可以直觀地創建路徑,只需要對分段推拉就能夠進行修改。彎曲港幣工具位于工具面板中的鋼筆工具里,它的快捷鍵為P。 在使用前,可以把填充和描邊選為空顏色,并打開路徑選項,勾…

tsconfig.json配置不生效

說明一下我遇到的問題,這是我的配置文件代碼的 {"compilerOptions": {"module": "none","target": "ES5","outFile": "./dist/bundle.js"} } 和我想象不同的是,我編譯成 js 沒…

源代碼加密之零日攻擊

# SDC沙盒:有效防御零日攻擊的多層防護體系 在當今復雜多變的網絡安全環境中,零日攻擊已成為企業面臨的重大威脅之一。零日攻擊利用尚未被公眾發現或尚未被軟件供應商修復的漏洞進行攻擊,具有極高的隱蔽性和破壞性。SDC沙盒作為一種先進的數…

記錄一次TDSQL網關夯住故障

環境信息: TDSQL-MySQL同城雙中心集群,集中式實例,一主三副本,每個中心兩個db副本,每個中心一個VIP,V每個IP通過硬件做負載均衡指向該中心兩個proxy,操作系統為麒麟v10 arm。 故障描述&#xf…

代碼隨想錄八股訓練營完結總結

! 40天的訓練營,我總結了自己完整的八股文,后續在面試過程中可以補充 很感謝這次訓練營,真的高頻,在面試中能擊中60%以上,剩下的就靠平時的積累了。 感謝訓練營的小伙伴,很多次想偷懶&#x…

VS Code 的 .S 匯編文件里面的注釋不顯示綠色

1. 確認文件語言模式 打開 .S 文件后,查看 VS Code 右下角的狀態欄,確認當前文件的識別模式(如 Assembly、Plain Text 等)。如果顯示為 Plain Text 或其他非匯編模式: 點擊狀態欄中的語言模式(如 Plain Te…

iphone各個機型尺寸

以下是蘋果(Apple)歷代 iPhone 機型 的屏幕尺寸、分辨率及其他關鍵參數匯總(截至 2023年10月,數據基于官方發布信息): 一、標準屏 iPhone(非Pro系列) 機型屏幕尺寸(英寸…

VSCode寫java時常用的快捷鍵

首先得先安好java插件 1、獲取返回值 這里是和idea一樣的快捷鍵的,都是xxxx.var 比如現在我new一個對象 就輸入 new MbDo().var // 點擊回車即可變成下面的// MbDo mbDo new MbDo()//以此類推get方法也可獲取 mbDo.getMc().var // 點擊回車即可變成下面的 // St…

相機內外參

文章目錄 相機內參相機外參 相機的內外參是相機標定過程中確定的重要參數,用于建立圖像像素坐標與實際世界坐標之間的關系。 相機內參 定義:相機內參是描述相機內部光學和幾何特性的參數,主要包括焦距、主點坐標、像素尺度因子以及畸變系數等…

【視頻目標分割論文集】Efficient Track Anything0000

github 摘要 視頻對象分割和追蹤任意目標領域出現了強大的工具——分割任意模型 2(SAM 2)。SAM 2 實現令人印象深刻的視頻對象分割性能的關鍵組成部分包括用于幀特征提取的大型多階段圖像編碼器,以及存儲過去幀記憶上下文以輔助當前幀分割的…

CSS學習02 動態列數表格開發,解決多組數據布局與邊框重合問題

概要 在前端開發中,表格常用于展示結構化數據。當數據組的字段數量不統一時(如有的行包含 3 組數據,有的行包含 2 組或 1 組),傳統固定列數的表格會出現結構錯位、邊框重合等問題。本文通過 HTML/CSS 規范方法&#x…