日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

計算機網絡

計算機網絡是指由通信線路互相連接的許多獨立自主工作的計算機構成的資源共享集合體。

  • 計算機網絡作用:資源共享。
  • 計算機網絡組成:許多獨立自主工作的計算機。
  • 計算機網絡實現方式:使用通信線路互相連接。
基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

網絡的分類

按照地理范圍分類

  • 局域網(Local Area.NETwork---LAN)
  • 覆蓋范圍一般不超過數十公里,通常是一幢建筑物內、相鄰的幾幢建筑物之間或者是一個園區的網絡。(短距離、高速率、高可靠、低成本)
基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

  • 廣域網(Wide Area Netword---WAN)
  • 覆蓋范圍通常為數百公里到數千公里,甚至數萬公里,可是一個地區或一個國家,世界幾大洲或整個地球。(長距離、低速率、高成本)
  • 城域網(Metroplolitan Area Network---MAN)
  • 覆蓋的地理范圍介于局域網和廣域網之間,通常為數十公里到數百公里的一座城市內。
  • 注意點:
  • 因特網(英文名為Internet)
  • 就是全世界最大的國際計算機互聯網絡,是一個建立在計算機網絡之上的網絡,眾多網絡用戶的參與使因特網成為寶貴的信息資源。形象地說,中國先民最早用“線”將知識和信息串在一起,今天因特網將人類歷史所有的知識和信息都連在一起!這里需要解釋互聯網與因特網的概念。當不同的網絡連接起來時就組成了互聯網(internet,不要與因特網Internet混淆),“互聯網”通常是只代表一般網絡互聯的意思,比如把一個LAN與WAN連接起來,或者連接兩個LAN就組成互聯網,而“因特網”是指特定的世界范圍的互聯網。

按照管理方式分類

  • 對等網 (Peer to Peer)通常是由很少幾臺計算機組成的工作組。對等網采用分散管理的方式,網絡中的每臺計算機既作為客戶機又可作為服務器來工作,每個用戶都管理自己機器上的資源。
  •  
基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

  • 客戶機/服務器網 (Client/Server) 網絡的管理工作集中在運行特殊網絡操作系統服務器軟件的計算機上進行,這臺計算機被稱為服務器,它可以驗證用戶名和密碼的信息,處理客戶機的請求。而網絡中其余的計算機則不需要進行管理,而是將請求通過轉發器(Redirector)發給服務器。
  •  

專欄
C語言入門精品視頻教程合集
作者:C語言基礎
99.9幣
73人已購
查看

專欄
C語言快速上手小游戲制作
作者:C語言基礎
29.9幣
30人已購
查看

按照傳輸方式分類

  • 廣播網絡 (Broadcasting Network)網絡中的計算機或設備通過一條共享的通信介質進行數據傳播,所有節點都會收到任何節點發出的數據信息。這種傳輸方式主要應用于局域網中。廣播網絡中有三種傳輸類型:單播、組播和廣播。
  • 點對點網絡 (Point to Point Network) 網絡中的計算機或設備通過單獨的鏈路進行數據傳輸,并且兩個節點間都可能會有多條單獨的鏈路。這種傳播方式主要應用于廣域網中。
  •  
基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

OSI(開放式系統互聯通信)七層網絡模型

(參考模型 英語:Open System Interconnection Reference Model,縮寫為 OSI

OSI網絡模型是一個開放式系統互聯的參考模型。通過這個參考模型,用戶可以非常直觀地了解網絡通信的基本過程和原理。OSI參考模型如下圖所示:

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

應用層

OSI參考模型中最靠近用戶的一層,是為計算機用戶提供應用接口,也為用戶直接提供各種網絡服務。我們常見應用層的網絡服務協議有:HTTP,HTTPS,FTP,POP3、SMTP等。

實際公司A的老板就是我們所述的用戶,而他要發送的商業報價單,就是應用層提供的一種網絡服務,當然,老板也可以選擇其他服務,比如說,發一份商業合同,發一份詢價單,等等。

表示層

表示層提供各種用于應用層數據的編碼和轉換功能,確保一個系統的應用層發送的數據能被另一個系統的應用層識別。如果必要,該層可提供一種標準表示形式,用于將計算機內部的多種數據格式轉換成通信中采用的標準表示形式。數據壓縮和加密也是表示層可提供的轉換功能之一。

由于公司A和公司B是不同國家的公司,他們之間的商定統一用英語作為交流的語言,所以此時表示層(公司的文秘),就是將應用層的傳遞信息轉翻譯成英語。同時為了防止別的公司看到,公司A的人也會對這份報價單做一些加密的處理。這就是表示的作用,將應用層的數據轉換翻譯等。

會話層

會話層就是負責建立、管理和終止表示層實體之間的通信會話。該層的通信由不同設備中的應用程序之間的服務請求和響應組成。

會話層的同事拿到表示層的同事轉換后資料,(會話層的同事類似公司的外聯部),會話層的同事那里可能會掌握本公司與其他好多公司的聯系方式,這里公司就是實際傳遞過程中的實體。他們要管理本公司與外界好多公司的聯系會話。當接收到表示層的數據后,會話層將會建立并記錄本次會話,他首先要找到公司B的地址信息,然后將整份資料放進信封,并寫上地址和聯系方式。準備將資料寄出。等到確定公司B接收到此份報價單后,此次會話就算結束了,外聯部的同事就會終止此次會話。

傳輸層

傳輸層建立了主機端到端的鏈接,傳輸層的作用是為上層協議提供端到端的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。該層向高層屏蔽了下層數據通信的細節,使高層用戶看到的只是在兩個傳輸實體間的一條主機到主機的、可由用戶控制和設定的、可靠的數據通路。我們通常說的,TCP UDP就是在這一層。端口號既是這里的“端”。

傳輸層就相當于公司中的負責快遞郵件收發的人,公司自己的投遞員,他們負責將上一層的要寄出的資料投遞到快遞公司或郵局。

網絡層

本層通過IP尋址來建立兩個節點之間的連接,為源端的運輸層送來的分組,選擇合適的路由和交換節點,正確無誤地按照地址傳送給目的端的運輸層。就是通常說的IP層。這一層就是我們經常說的IP協議層。IP協議是Internet的基礎。

空運好像直接就飛到北京了,首先要到順豐的深圳集散中心,從深圳集散中心再送到武漢集散中心,從武漢集散中心再寄到北京順義集散中心。這個每個集散中心,就相當于網絡中的一個IP節點。

數據鏈路層

將比特組合成字節,再將字節組合成幀,使用鏈路層地址 (以太網使用mac地址)來訪問介質,并進行差錯檢測。數據鏈路層又分為2個子層:邏輯鏈路控制子層(LLC)和媒體訪問控制子層(MAC)。

MAC子層處理CSMA/CD算法、數據出錯校驗、成幀等;LLC子層定義了一些字段使上次協議能共享數據鏈路層。 在實際使用中,LLC子層并非必需的。

規則,檢驗路口

物理層

實際最終信號的傳輸是通過物理層實現的。通過物理介質傳輸比特流。規定了電平、速度和電纜針腳。常用設備(各種物理設備)集線器、中繼器、調制解調器、網線、雙絞線、同軸電纜。這些都是物理層的傳輸介質。

快遞寄送過程中的交通工具,就相當于我們的物理層,例如汽車,火車,飛機,船。

TCP/IP五層模型

(TCP(Transmission Control Protocol)傳輸控制協議用于保證被傳送信息的完整性) (IP(Internet Protocol)網際互連協議負責將消息從一個地方傳送到另一個地方)

在每一層實現的協議也各不同,即每一層的服務也不同,其中每層中具體的協議如下圖

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

在每一層都工作著不同的設備,比如我們常用的交換機就工作在數據鏈路層的,一般的路由器是工作在網絡層的,

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

TCP/IP協議:是一個協議簇,其包括了很多協議。例如,FTP(文本傳輸協議)、SMTP(郵件傳輸協議)等應用層協議。TCP/IP協議的網絡模型只有4層,包括數據鏈路層、網絡層、數據傳輸層和應用層

協議:網絡協議的簡稱,網絡協議是通信計算機雙方必須共同遵從的一組約定。如怎么樣建立連接、怎么樣互相識別等。只有遵守這個約定,計算機之間才能相互通信交流。

網絡地址

IP 地址是IP協議提供的一種地址格式,它為Internet上的每一個網絡和每一臺主機分配一個網絡地址,以此來屏蔽物理地址的差異。是運行TCP/IP協議的唯一標識。

IP地址結構:網絡部分+機器部分

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

windows查看IP:ipconfig

域名系統DNS()

(英文:Domain Name System,縮寫:DNS

DNS采用分層次結構,入網的每臺主機都可以有一個類似下面的域名:

主機名.機構名.頂層域名

moe.edu.cn 中國教育部

從左到右,域的范圍變大。具有實際含義,比IP地址好記。Internet上幾乎在每一子域都設有域名服務器,服務器中包含有該子域的全體域名和地址信息。Internet每臺主機上都有地址轉換請求程序,負責域名與IP地址轉換。

頂級域名分為類型名和區域名兩類。類型名共14個,區域名用兩個字母表示世界各國和地區,

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

中國互聯網絡的域名體系:

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

windows域名解析指令:Nslookup

URL(統一資源定位系統)

(統一資源定位系統 uniform resource locator,縮寫:URL)

統一資源定位系統是因特網的萬維網服務程序上用于指定信息位置的表示方法。

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

端口號

所謂的端口,就好像是門牌號一樣,客戶端可以通過ip地址找到對應的服務器端,但是服務器端是有很多端口的,每個應用程序對應一個端口號,通過類似門牌號的端口號,客戶端才能真正的訪問到該服務器。為了對端口進行區分,將每個端口進行了編號,這就是端口號。

  • 公認端口(0-1023)
  • 21端口:FTP 文件傳輸服務
  • 22端口:SSH 遠程連接服務
  • 23端口:TELNET 終端仿真服務
  • 25端口:SMTP 簡單郵件傳輸服務
  • 53端口:DNS 域名解析服務
  • 80端口:HTTP 超文本傳輸服務
  • 443端口:HTTPS 加密的超文本傳輸服務
  • 注冊端口(1024-49151)
  • 3306端口:MySQL數據庫端口
  • 5432端口:postgresql數據庫端口
  • 6379端口:redis數據庫端口
  • 8080端口:TCP服務端默認端口
  • 8888端口:Nginx服務器的端口
  • 9200端口:Elasticsearch服務器端口
  • 27017端口:mongoDB數據庫默認端口
  • 22122端口:fastdfs服務器默認端口
  • 私有端口(49152-65535)

理論上,不應把常用服務分配在這些端口上。實際上,有些較為特殊的程序,特別是一些木馬程序就非常喜歡用這些端口,因為這些端口常常不被引起注意,容易隱蔽。

windows查看端口號:netstat

SMTP

(簡單郵件傳輸協議 ,imple Mail Transfer Protocol,縮寫:SMTP)

SMTP是一種提供可靠且有效的電子郵件傳輸的協議。SMTP是建立在FTP文件傳輸服務上的一種郵件服務,主要用于系統之間的郵件信息傳遞,并提供有關來信的通知。

電子郵件地址:用戶名@電子郵件服務器

電子郵件系統:

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

HTTP

(超文本傳輸協議,HyperText Transmit Protocol,縮寫:HTTP)

http是一個簡單的請求-響應協議,它通常運行在TCP之上。它指定了客戶端可能發送給服務器什么樣的消息以及得到什么樣的響應。請求和響應消息的頭以ASCII碼形式給出;而消息內容則具有一個類似MIME的格式。這個簡單模型是早期Web成功的有功之臣,因為它使開發和部署非常地直截了當。特點如下:

  • 基于TCP/IP的一個應用層的協議
  • 典型的C/S結構的工作方式
  • 可以傳輸任意類型的數據對象
  • 面向一次連接、無狀態的網絡協議
基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

FTP

(文件傳輸協議:File Transfer Protocol,縮寫:FTP)

FTP協議包括兩個組成部分,其一為FTP服務器,其二為FTP客戶端。其中FTP服務器用來存儲文件,用戶可以使用FTP客戶端通過FTP協議訪問位于FTP服務器上的資源。在開發網站的時候,通常利用FTP協議把網頁或程序傳到Web服務器上。此外,由于FTP傳輸效率非常高,在網絡上傳輸大的文件時,一般也采用該協議。

使用FTP傳送文件要求在遠程機上有一個賬號,提供匿名FTP服務的主機上有一個公共的anonymous(匿名的)賬號。

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

如何接入因特網

  • LAN接入:常用于單位用戶, 局域網上的所有用戶有同樣的IP地址
  • 撥號接入:常用于個人用戶, 用戶沒有固定IP地址. (但每次接入時都有唯一的IP地址)
基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

ISP(互聯網服務提供商 internet Service Provider)

PPP(點對點協議 Point to Point Protocol)

基于服務器的網絡結構

Client/Server結構(胖客戶機)C/S

Browser/Server結構(瘦客戶機)B/S

SOCKET 套接字

所謂套接字(Socket),就是對網絡中不同主機上的應用進程之間進行雙向通信的端點的抽象。一個套接字就是網絡上進程通信的一端,提供了應用層進程利用網絡協議交換數據的機制。從所處的地位來講,套接字上聯應用進程,下聯網絡協議棧,是應用程序通過網絡協議進行通信的接口,是應用程序與網絡協議根進行交互的接口。

套接字分類

1.流套接字(SOCK_STREAM)

流套接字用于提供面向連接、可靠的數據傳輸服務。該服務將保證數據能夠實現無差錯、無重復送,并按順序接收。流套接字之所以能夠實現可靠的數據服務,原因在于其使用了傳輸控制協議,即TCP(The Transmission Control Protocol)協議 。

2.數據報套接字(SOCK_DGRAM)

數據報套接字提供一種無連接的服務。該服務并不能保證數據傳輸的可靠性,數據有可能在傳輸過程中丟失或出現數據重復,且無法保證順序地接收到數據。數據報套接字使用UDP( User DatagramProtocol)協議進行數據的傳輸。由于數據報套接字不能保證數據傳輸的可靠性,對于有可能出現的數據丟失情況,需要在程序中做相應的處理 。

3.原始套接字(SOCK_RAW)

原始套接字與標準套接字(標準套接字指的是前面介紹的流套接字和數據報套接字)的區別在于:原始套接字可以讀寫內核沒有處理的IP數據包,而流套接字只能讀取TCP協議的數據,數據報套接字只能讀取UDP協議的數據。因此,如果要訪問其他協議發送的數據必須使用原始套接

三次握手

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

所謂的“三次握手”:為了對每次發送的數據量進行跟蹤與協商,確保數據段的發送和接收同步,根據所接收到的數據量而確認數據發送、接收完畢后何時撤消聯系,并建立虛連接,圖示如下:

第一次握手

客戶端向服務器發出連接請求報文,這時報文首部中的同部位SYN=1,同時隨機生成初始序列號 seq=x,此時,TCP客戶端進程進入了 SYN-SENT(同步已發送狀態)狀態。TCP規定,SYN報文段(SYN=1的報文段)不能攜帶數據,但需要消耗掉一個序號。這個三次握手中的開始。表示客戶端想要和服務端建立連接。

第二次握手

TCP服務器收到請求報文后,如果同意連接,則發出確認報文。確認報文中應該 ACK=1,SYN=1,確認號是ack=x+1,同時也要為自己隨機初始化一個序列號 seq=y,此時,TCP服務器進程進入了SYN-RCVD(同步收到)狀態。這個報文也不能攜帶數據,但是同樣要消耗一個序號。這個報文帶有SYN(建立連接)和ACK(確認)標志,詢問客戶端是否準備好。

第三次握手

TCP客戶進程收到確認后,還要向服務器給出確認。確認報文的ACK=1,ack=y+1,此時,TCP連接建立,客戶端進入ESTABLISHED(已建立連接)狀態。TCP規定,ACK報文段可以攜帶數據,但是如果不攜帶數據則不消耗序號。這里客戶端表示我已經準備好。

AYN:同步序列編號(*Synchronize Sequence Numbers*)。是TCP/IP建立連接時使用的握手信號。在客戶機和服務器之間建立正常的TCP網絡連接時,客戶機首先發出一個SYN消息,服務器使用SYN+ACK應答表示接收到了這個消息,最后客戶機再以ACK消息響應。這樣在客戶機和服務器之間才能建立起可靠的TCP連接,數據才可以在客戶機和服務器之間傳遞。

ACK: (Acknowledge character)即是確認字符,在數據通信中,接收站發給發送站的一種傳輸類控制字符。表示發來的數據已確認接收無誤。

思考:為什么要三次握手呢,有人說兩次握手就好了

舉例:已失效的連接請求報文段。

client發送了第一個連接的請求報文,但是由于網絡不好,這個請求沒有立即到達服務端,而是在某個網絡節點中滯留了,直到某個時間才到達server,本來這已經是一個失效的報文,但是server端接收到這個請求報文后,還是會想client發出確認的報文,表示同意連接。假如不采用三次握手,那么只要server發出確認,新的建立就連接了,但其實這個請求是失效的請求,client是不會理睬server的確認信息,也不會向服務端發送確認的請求,但是server認為新的連接已經建立起來了,并一直等待client發來數據,這樣,server的很多資源就沒白白浪費掉了,采用三次握手就是為了防止這種情況的發生,server會因為收不到確認的報文,就知道client并沒有建立連接。這就是三次握手的作用。

四次揮手

四次揮手,別名連接終止協議。其性質為終止協議,圖示如下:

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

第一次揮手

TCP發送一個FIN(結束),用來關閉客戶到服務端的連接??蛻舳诉M程發出連接釋放報文,并且停止發送數據。釋放數據報文首部,FIN=1,其序列號為seq=u(等于前面已經傳送過來的數據的最后一個字節的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態。 TCP規定,FIN報文段即使不攜帶數據,也要消耗一個序號。

第二次揮手

服務端收到這個FIN,他發回一個ACK(確認),確認收到序號為收到序號+1,和SYN一樣,一個FIN將占用一個序號。服務器收到連接釋放報文,發出確認報文,ACK=1,ack=u+1,并且帶上自己的序列號seq=v,此時,服務端就進入了CLOSE-WAIT(關閉等待)狀態。TCP服務器通知高層的應用進程,客戶端向服務器的方向就釋放了,這時候處于半關閉狀態,即客戶端已經沒有數據要發送了,但是服務器若發送數據,客戶端依然要接受。這個狀態還要持續一段時間,也就是整個CLOSE-WAIT狀態持續的時間??蛻舳耸盏椒掌鞯拇_認請求后,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態,等待服務器發送連接釋放報文(在這之前還需要接受服務器發送的最后的數據)。

第三次揮手

服務端發送一個FIN(結束)到客戶端,服務端關閉客戶端的連接。服務器將最后的數據發送完畢后,就向客戶端發送連接釋放報文,FIN=1,ack=u+1,由于在半關閉狀態,服務器很可能又發送了一些數據,假定此時的序列號為seq=w,此時,服務器就進入了LAST-ACK(最后確認)狀態,等待客戶端的確認。

第四次揮手

客戶端發送ACK(確認)報文確認,并將確認的序號+1,這樣關閉完成。客戶端收到服務器的連接釋放報文后,必須發出確認,ACK=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態。注意此時TCP連接還沒有釋放,必須經過2∗∗MSL(最長報文段壽命)的時間后,當客戶端撤銷相應的TCB后,才進入CLOSED狀態。服務器只要收到了客戶端發出的確認,立即進入CLOSED狀態。同樣,撤銷TCB后,就結束了這次的TCP連接??梢钥吹剑掌鹘Y束TCP連接的時間要比客戶端早一些。

思考:那么為什么是4次揮手呢?

為了確保數據能夠完成傳輸。

關閉連接時,當收到對方的FIN報文通知時,它僅僅表示對方沒有數據發送給你了;但未必你所有的數據都全部發送給對方了,所以你可以未必會馬上會關閉SOCKET,也即你可能還需要發送一些數據給對方之后,再發送FIN報文給對方來表示你同意現在可以關閉連接了,所以它這里的ACK報文和FIN報文多數情況下都是分開發送的??赡苡腥藭幸蓡?,tcp我握手的時候為何ACK(確認)和SYN(建立連接)是一起發送。揮手的時候為什么是分開的時候發送呢.因為當Server端收到Client端的SYN連接請求報文后,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉連接時,當Server端收到FIN報文時,很可能并不會立即關閉 SOCKET,所以只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步揮手。

思考:客戶端突然掛掉了怎么辦?

正常連接時,客戶端突然掛掉了,如果沒有措施處理這種情況,那么就會出現客戶端和服務器端出現長時期的空閑。解決辦法是在服務器端設置?;钣嫊r器,每當服務器收到客戶端的消息,就將計時器復位。超時時間通常設置為2小時。若服務器超過2小時沒收到客戶的信息,他就發送探測報文段。若發送了10個探測報文段,每一個相隔75秒,還沒有響應就認為客戶端出了故障,因而終止該連接。

SOCKET基本操作

既然socket是“open—write/read—close”模式的一種實現,那么socket就提供了這些操作對應的函數接口。

TCP Sockets 編程基本流程

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

UDP Sockets 編程基本流程

基礎好文|初學者:網編基礎,我只看這篇文章,網絡編程基礎篇

 

UDP:

  • 連接:發送數據不需要創建連接,分為發送端和接收端
  • 大?。喊l送數據以包為單位進行發送,每個包的大小限制在64k
  • 傳輸速度快,可能會造成數據丟失
  • 相比TCP協議來說傳輸速度更快
  • 應用:直播,視頻通話

TCP:

  • 連接:數據傳輸可靠,傳輸之前需要連接
  • 大?。簲祿ㄟ^IO流的方式進行傳輸,可以傳輸無限大小的數據
  • c/s:有服務端和客戶端之分,也就是平時說的C/S(Client/Server)結構
  • 相比UPD傳輸速度慢

SOCKET接口介紹

1.初始化創建socket對象

int socket (int domain, int type, int protocol)
'domain   : 協議族。常用的協議族有,AF_INET、AF_INET6、AF_LOCAL(或稱AF_UNIX,Unix域socket)、AF_ROUTE等等協議族
'type     : socket類型
            'TCP類型: SOCK_STREAM
            'UDP類型: SOCK_DGRAM
            '原始類型: SOCK_RAW
'protocol : 通常賦值"0",由系統自動選擇

2.創建的socket綁定到指定的IP地址和端口

int bind(int sockfd, const struct sockaddr* myaddr, socklen_t addrlen)
'sockfd    : socket()函數返回的描述符
'myaddr    : 指明要綁定的本地IP和端口號,使用網絡字節序
'addrlen   : 常被設置為sizeof(struct sockaddr)

IP與端口設置:

my_addr.sin_port = 0;                   /* 系統隨機選擇一個未被使用的端口號 */ 
my_addr.sin_addr.s_addr = INADDR_ANY;   /* 填入本機IP地址 */ 

3.監聽服務

int listen(int sockfd, int backlog)
'sockfd     : socket()函數返回的描述符
'backlog    : 套接字維護的最大連接個數,大多數系統缺省值為20

4.接受請求

int accept (int sockfd, struct sockaddr *addr, socklen_t *addrlen)
'sockfd     : socket()函數返回的描述符
'addr       : 存放發起連接請求的客戶端的協議地址
'addrlen    : 指明輸出時addr的實際長度

5.連接函數

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen)
'sockfd     : 本地客戶端額socket描述符
'serv_addr  : 服務器協議地址
'addrlen    : 地址緩沖區的長度

6.TCP類型的數據發送

int send(int sockfd, const void *msg, int len, int flags)
'sockfd     : 發送端套接字描述符
'msg        : 發送數據的緩沖區
'len        : 待發送數據的字節長度
'flags      : 一般情況下置為0

7.TCP類型的數據接受

int recv(int sockfd, void *buf, int len, unsigned int flags)
'sockfd     : 接收端套接字描述符
'buf        : 接收緩沖區的基地址
'len        : 以字節計算的接收緩沖區長度
'flags      : 一般情況下置為0

8.UDP數據發送

using ADDR=const struct sockaddr;  
int sendto(int sockfd, const void *msg, int len, unsigned int flags, ADDR *dst_addr, int addrlen)
'sockfd     :發送端套接字描述符
'msg        :待發送數據的緩沖區
'flags      : 一般情況下置為0
'dst_addr   : 數據發送的目的地址
'addrlen    : 地址長度

9.UDP數據接受

int recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, int*fromlen)
'sockfd     : 接收端套接字描述
'buf        : 用于接收數據的應用緩沖區地址
'len        : 用于接收數據的應用緩沖區地址
'flags      : 指名緩沖區大小
'src_addr   : 通常為0
'fromlen    : 數據來源端的地址

10.字節序轉換函數

把給定系統所采用的字節序稱為主機字節序。為了避免不同類別主機之間在數據交換時由于對于字節序解釋的不同而導致的差錯,引入了網絡字節序,即網絡傳輸所采用的字節序。規定網絡字節序使用“Big-Endian”(大端模式)方式。

主機到網絡:

u_long htonl(u_long hostlong);
u_short htons(u_short short);

網絡到主機:

u_long ntohl (u_long hostlong);
u_short ntohs (u_short short);

11.初始化套接字庫

int WSAStartup(WORD wVersion,LPWSADATA lpWSAData);
'wVersion   : Windows Socket的版本
'lpWSAData  : WSAData結構指針

12.地址結構體

ipv4對應的是:
struct sockaddr_in {
    sa_family_t    sin_family; 
    in_port_t      sin_port;   
    struct in_addr sin_addr;   
};
struct in_addr {
    uint32_t       s_addr;     
};
ipv6對應的是:
struct sockaddr_in6 { 
    sa_family_t     sin6_family;    
    in_port_t       sin6_port;      
    uint32_t        sin6_flowinfo;  
    struct in6_addr sin6_addr;      
    uint32_t        sin6_scope_id;  
};

struct in6_addr { 
    unsigned char   s6_addr[16];    
};
Unix域對應的是:
#define UNIX_PATH_MAX    108
struct sockaddr_un { 
    sa_family_t sun_family;                
    char        sun_path[UNIX_PATH_MAX];   
};

分享到:
標簽:網絡編程
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定