3.ip位址使網路中實現主機與主機之間的通訊,但是主機是哪個有很多程序;通訊中必須標識一條資料應該由哪個程序處理
埠:uint16_t 無符號兩個位元組的整數
乙個程序可以使用多個埠,但是乙個埠只能被乙個程序占用
網路中的每條資料都必須具備:源埠/目的埠 表示資料從哪個主機來,到按個主機去
網路通訊:不同主機之間的程序間通訊
為什麼不使用pid標識程序而是使用新的字段埠來標識–程序的pid會隨著程式的重啟而發生改變,而埠卻不會;
4.通過ip位址和埠可以實現不同主機之間程序間通訊(網路通訊)
網路通訊協議:網路通訊中資料格式的約定
協議分層:
對通訊協議在不同的通訊環境中進行封裝,不同層次使用不同協議,提供不同的服務;將通訊環境劃分出來,通訊的實現更加簡單,更容易形成規範
網路通訊環境中的協議分層:
iso:osi七層參考模型:應用層/表示層/會話層/傳輸層/網路層/資料鏈路層/物理層
tcp/ip五層模型:應用層/傳輸層/網路層/鏈路層/物理層
tcp/ip是一組協議棧/協議簇:其中包含許多協議,ip和tcp協議只是其中比較典型的兩種
應用層:負責應用程式之間的資料溝通;例如qq與qq之間的通訊協議協商qq的資料格式 典型協議:http/dns/ftp
傳輸層:負責不同主機程序間的資料傳輸;因為傳輸層的協議中包含主要資訊就是埠 典型協議:tcp/udp
網路層:負責位址管理和路由選擇;為網路中的資料選擇合適的路徑;ip資訊 典型協議:ip 典型裝置:路由器
鏈路層:負責相鄰裝置之間的資料幀識別以及傳輸;網絡卡裝置的mac位址資訊 典型協議:ethernet 典型裝置:交換機
物理層:負責物理光電訊號的傳輸 典型協議:乙太網協議 典型裝置:集線器
協議分層:根據提供的服務不同,分出不同的通訊層次,在每個層次使用不同的協議實現資料格式約定–將複雜的網路通訊環境簡化清晰
3.ip位址使網路中實現主機與主機之間的通訊,但是主機是哪個有很多程序;通訊中必須標識一條資料應該由哪個程序處理
埠:uint16_t 無符號兩個位元組的整數
乙個程序可以使用多個埠,但是乙個埠只能被乙個程序占用
網路中的每條資料都必須具備:源埠/目的埠 表示資料從哪個主機來,到按個主機去
網路通訊:不同主機之間的程序間通訊
為什麼不使用pid標識程序而是使用新的字段埠來標識–程序的pid會隨著程式的重啟而發生改變,而埠卻不會;
4.通過ip位址和埠可以實現不同主機之間程序間通訊(網路通訊)
網路通訊協議:網路通訊中資料格式的約定
協議分層:
對通訊協議在不同的通訊環境中進行封裝,不同層次使用不同協議,提供不同的服務;將通訊環境劃分出來,通訊的實現更加簡單,更容易形成規範
網路通訊環境中的協議分層:
iso:osi七層參考模型:應用層/表示層/會話層/傳輸層/網路層/資料鏈路層/物理層
tcp/ip五層模型:應用層/傳輸層/網路層/鏈路層/物理層
tcp/ip是一組協議棧/協議簇:其中包含許多協議,ip和tcp協議只是其中比較典型的兩種
應用層:負責應用程式之間的資料溝通;例如qq與qq之間的通訊協議協商qq的資料格式 典型協議:http/dns/ftp
傳輸層:負責不同主機程序間的資料傳輸;因為傳輸層的協議中包含主要資訊就是埠 典型協議:tcp/udp
網路層:負責位址管理和路由選擇;為網路中的資料選擇合適的路徑;ip資訊 典型協議:ip 典型裝置:路由器
鏈路層:負責相鄰裝置之間的資料幀識別以及傳輸;網絡卡裝置的mac位址資訊 典型協議:ethernet 典型裝置:交換機
物理層:負責物理光電訊號的傳輸 典型協議:乙太網協議 典型裝置:集線器
協議分層:根據提供的服務不同,分出不同的通訊層次,在每個層次使用不同的協議實現資料格式約定–將複雜的網路通訊環境簡化清晰
5.網路位元組序
位元組序:cpu在記憶體中對資料進行訪問的順序—取決於cpu架構
cpu架構:x86架構cpu—小端 /mips架構cpu—大端
大端位元組序:低位址存高位
小端位元組序:低位址存低位
主機位元組序:當前主機的位元組序
網路通訊是不同主機之間的通訊,但是不同主機上的主機位元組序會對通訊造成極大影響:資料二義
因此網路通訊中必須統一位元組序—網路位元組序,才能避免這種問題
不管你的主機是大端還是小端,網路通訊的時候統一將資料轉換為網路位元組序–大端位元組序
如果通訊主機是小端主句,則在網路通訊時需要將資料進行位元組序轉換才能傳送
並不是所有的資料都需要轉換:需要轉換的資料關鍵點在與記憶體中一次訪問大小超過乙個位元組的資料—short int long float double
但是字串char buf[1024]這是不需要進行轉換的–字串本身就是按位元組儲存的
如何判斷乙個主機的位元組序是大端還是小端
unio tmptemp.a=1 if(tmp.b==1);
網路基礎2-1
應用層協議:負責應用程式之間的資料溝通–而應用程式是程式設計師寫的,因此,應用層協議實際也是程式設計師自己定的。
1.自定製協議:自己定義的協議,私有協議
網路版計算器:
客戶端向服務端傳遞兩個數字以及乙個運算子,服務端收到資料並進行解析得到數字和運算子,然後進行運算,最後將結果返回給客戶端
使用結構體進行資料物件的二進位制結構化組織,進行資料傳輸/可持久化資料儲存
序列化:將資料物件按照指定協議進行組織成可持久化儲存/資料傳輸的二進位制資料串
反序列化:將持久化儲存或者資料傳輸的二進位制資料串按照指定協議解析出各個資料物件
而使用結構體來組織資料其實就是資料物件的二進位制序列化
常見的資料序列化方式有很多:json序列化;protobuf序列化
2.知名協議:http協議–超文字傳輸協議–http協議有乙個非常好的優點:
http協議留有程式設計師一定的自製空間
http協議–超文字傳輸協議,是一種用於分布式,協作式和超**資訊系統的應用層協議。http是乙個客戶端終端和伺服器終端請求和應答的標準
http工作原理:http協議採取請求/響應模式。客戶端向伺服器傳送乙個請求報文,請求報文包含請求的方法,url,協議版本,請求頭部和請求資料。伺服器以乙個狀態進行 響應,響應的內容包括協議的版本,成功或錯誤**,伺服器資訊,響應頭部和響應資料
**:統一資源定位符(定位網路中唯一的資源)-url
統一資源定位符如何定位網路中的唯一資源------url的格式以及其所包含的要素
https–協議方案名稱,是加密的http協議 : //–是乙個間隔符
username:password–本次訪問伺服器的使用者認證資訊
www.baodu.com:網域名稱–經過網域名稱解析得到對應伺服器的ip位址
/s–請求的資源在伺服器上的路徑,不一定是實體資源
?wd=c%2b%2b&rsv_spt=1–查詢字串:當前客戶端提交給服務端的資料–由乙個個key=val形式的鍵值對組成,鍵值對之間以&符號隔開
使用者提交給伺服器的查詢字串中的val需要進行url編碼–因為url中有很多特殊字元具有特殊含義,而使用者提交的資料也包含有特殊的字元就會造成歧義,因此需要對val進行url編碼
url編碼:將特殊字元的每乙個位元組,都轉換成16進製制數字的字元 例如:±>2b
萬一萬一使用者本身提交的資料就有2b,也會造成歧義,因此每乙個位元組進行轉換之後,需要在前面加上%表示緊跟其後面的兩個字元經過了url編碼 + ->%2b
url解碼:得到查詢字串後,在val中遇到%,則認為緊跟其後的兩個字元需要解碼–將兩個字元轉化為數字
#ch:片段識別符號—指向html中的乙個標籤
http協議格式:就是協議的實現
首行:請求首行:包含三大資訊,以空間進行間隔,並且以\r\n作為結尾;
請求方法:不同的請求方法,具有不同的主要負責功能
get:請求獲取乙個資源,並要求伺服器返回實體資料
post:向伺服器提交表單資料
head:請求獲取乙個資源,但是並不要求伺服器返回實體資料
get/post:get也能向伺服器提交資料,但是提交的資料在url的查詢字串中get是沒有正文的/而post提交的資料在正文中
url:主要資訊就是請求的資源路徑以及提交的查詢字串
協議版本:
響應首行:包含三大資訊,以空間進行間隔,並且以\r\n作為結尾;
協議版本:
響應狀態碼:向客戶端反應本次請求的處理結果狀態—包含五大類 :
1xx:一些描述資訊
2xx:本次請求正確處理完畢 200-請求成功
3xx:本次請求的資源可能移動到其他位置了,請客戶端重新請求新的位置— 資源重定向
4xx:客戶端錯誤 404
5xx:500 伺服器內部錯誤
狀態碼描述:對於本次狀態碼的描述資訊
linux網路程式設計基礎 網路基礎
客戶機 client 伺服器 server 模式。需要在通訊兩端各自部署客戶機和伺服器來完成資料通訊。瀏覽器 browser 伺服器 server 模式。只需在一端部署伺服器,而另外一端使用每台pc都預設配置的瀏覽器即可完成資料的傳輸。c s模式 優點缺點 資料快取本地,效率高 工作量大,開發周期更...
Linux網路基礎
linux為使用者提供了完善的 強大的網路功能 1.完善的內建網路。其他作業系統不包含如此緊密的和核心結合在一起的網路部分。2.linux免費提供了大量支援internet的軟體,internet是在unix領域中建立並繁榮起來的,在這方面使用linux是相當方便的,使用者能用linux與世界上的其...
linux網路基礎
1.ifconfig 顯示網路配置 ip,子網掩碼 2.ifdown 關閉網絡卡 3.ifup 開啟網絡卡 4.netstat 顯示埠號 t 列出tcp埠 u 列出udp埠 n 使用ip顯示 a 列出所有 r 檢視路由表 等價與 route 5.nslooup 檢視dns伺服器ip。測試命令 1.p...