linux 高效能讀書筆記之通用socket位址

2021-09-20 17:00:09 字數 1420 閱讀 3846

####socket網路程式設計介面

socket的位址是結構體sockaddr

**如下

struct sockaddr

sa_family 成員是位址族型別(sa_family_t)變數。

位址族型別通常與協議族型別對應

1.二者對應表

協議族位址表

描述pf_unix

af_unix

unix本地域協議族

pf_inet

af_inet

tcp/ipv4協議族

pf_inet6

af_inet6

tcp/ipv6協議族

二者定義在bits/socket.h標頭檔案,值一樣,所以二者經常混用

sa_data成員用於存放socket位址值

但是不同的協議族的位址值具有不同的含義和長度

2.協議族及其位址值

協議族位址值含義和長度

pf_unix

檔案的路徑名,長度可達108位元組

協議族位址值含義和長度

pf_inet

16bit 埠號和32bit ipv4位址

pf_unix

檔案的路徑名,長度可達108位元組

pf_inet6

16bit 埠號,32bit流標識,128bitipv6位址,32bit範圍id,共26位元組

問題:14位元組的sa_data無法容納多數協議族的位址值,因此linux定義了新的通用socket位址結構體

struct sockaddr_storage

ssalign:用於記憶體對齊

3.專用socket位址

問題: 上述通用結構體很不好用,設定與獲取ip位址和埠號需要執行繁瑣的位操作。

解決:linux為各個協議族提供了專門的socket位址結構體

3.1unix本地域協議族:

struct sockaddr_un

tcp/ip協議族有了兩個專用

struct

socketaddr_in

struct

in_addr

struct

socketaddr_in6

struct

in6_addr

4.ip位址轉換函式

ipv4:點分十進位制字串

ipv6:16進製制字串

in_addr_t inet_addr (const

char * strptr);

intinet_aton

(const

char * cp, struct in_addr * inp)

; char * inet_ntoa

(struct in_addr in)

;

高效能MySQL 讀書筆記

第4章 schema與資料型別優化 第5章 建立高效能的索引 三星索引 最左匹配原則 高效能索引策略 多列索引 mysql採用的是分層架構 上層是server層,下層是儲存引擎層。sql標準中定義了四種隔離級別 隔離級別 定義髒讀 不可重複讀 幻讀加鎖讀 讀未提交 read uncommitted,...

高效能Mysql 讀書筆記

mysql與眾不同的特性是它的儲存引擎架構,這種架構將查詢處理即其他的任務系統和資料的儲存 提取相分離.第二層架構中,大多數的mysql的核心服務功能都在這一層,包括查詢解析,分析優化,快取以及所處的內建函式,所有的跨儲存引擎的功能都在這一層實現 儲存過程,觸發器,檢視等.第三層包含mysql的儲存...

《高效能MySQL》讀書筆記之建立高效能的索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引優化是對查詢效能優化的最有效手段。索引能夠輕易將查詢效能提高幾個數量級。建立乙個最優的索引經常需要重寫查詢。5.1 索引基礎 在mysql中,儲存引擎首先在索引中找到對應值,然後根據匹配的索引記錄找到對應的資料行。索引可以包含乙個或多個列的值。如果索...