網絡編程
時間:2019-08-06 來源:沈陽中心,竇老師
一、網絡編程的實質
應用開發中大多都會涉及到網絡功能,網絡編程是Linux應用開發中非常核心的技術之一。
網絡編程的目的是直接或間接地通過網絡協議與其他計算機進行通訊。
作為應用開發程序員,我們開發的軟件都是應用軟件,而應用軟件必須運行于操作系統之上,操作系統則運行于硬件之上,應用軟件是無法直接操作硬件的,應用軟件對硬件的操作必須調用操作系統的接口,由操作系統操控硬件。
網絡編程的實質:
1.通過操作相應 API 調度計算機硬件資源,并利用傳輸管道(網線)進行數據交換的過程。
2.網絡編程編寫的是傳輸層面代碼,再往下就是操作系統提供的功能,我們在傳輸層編寫 TCP 或 UDP 代碼,會調用下層的接口,而這些接口是操作系統提供的。
二、什么是網絡
計算機之間的通信要有:
1.物理鏈接介質:網線,交換機,路由器等網絡設備。
2.互聯網協議:客戶端按照協議規定的格式組織數據發送,服務端 按照相同的協議解析出來。
按照功能不同,人們將互聯網協議分為按照功能不同,人們將互聯網協議分為 OSI七層或TCP/IP五層或TCP/IP四層

TCP/IP協議:Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協議/因特網互聯協議,又名網絡通訊協議,是Internet最基本的協議、Internet國際互聯網絡的基礎。
OSI七層協議:為了解決網絡通信中這樣不互通的問題,國際標準化組織ISO于1977年成立了一個委員會,在現有網絡的基礎上,提出了不基于具體機型、操作系統或公司的網絡體系結構,稱為開放系統互聯模型。
三、socket
我們經常把socket翻譯為套接字,socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用已實現進程在網絡中通信。

四、網絡通信要素
網絡通信實現要素:協議、本地地址、本地端口、遠程地址、遠程端口。
1.socket之傳輸協議
TCP協議與UDP協議是負責數據封裝與打包的協議,它們都是傳輸層協議。
(1)tcp協議
TCP 是面向連接的通信協議;
通過 3 次握手建立連接,通訊完成時要拆除連接;
由于 TCP 是面向連接的,所以只能用于端到端的通訊,在和一端通訊的同時,不能和其他端通訊;
(2)udp協議
UDP 是面向無連接的通訊協議;
UDP 數據包括目的端口號和源端口號信息;
由于通訊不需要連接,所以可以實現廣播發送,并不局限于端到端;
2.IP
在Internet上IP地址和主機名是一一對應的,通過域名解析可以由主機名得到機器的IP,由于機器名更接近自然語言,容易記憶,所以使用比IP地址廣泛,但是對機器而言只有IP地址才是有效的標識符。
3.端口號(portnumber):網絡通信時同一機器上的不同進程的標識。
如:80,21,23,25,其中1~1024為系統保留的端口號
五、網絡編程模型
目前較為流行的網絡編程模型是客戶機/服務器(C/S)結構,C指的是client(客戶端軟件),S指的是Server(服務器軟件)。
以使用TCP協議通訊的socket為例,其交互流程如下:


