Linux系统编程10:Socket编程1-概念

1.套接字

1.1 什么是socket

  • socket是一个编程接口
  • socket是一种特殊的文件描述符

everything in Unix is a file

1.2 协议域domain

No. 参数 含义
1 AF_INET IPv4
2 AF_INET6 IPv6
3 AF_LOCAL Unix域

1.3 类型type

No. 类型 Type 作用 说明
1 流式套接字 SOCK_STREAM 提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。 TCP协议支持该套接字。
2 数据报套接字 SOCK_DGRAM 提供面向无连接的服务,数据收发无序,不能保证数据的准确到达。 UDP协议支持该套接字。
3 原始套接字 SOCK_RAW 允许对低于传输层的协议或物理网络直接访问 常用于检测新的协议
No. 类型 作用
1 流式套接字(SOCK_STREAM) 提供了一个面向连接,可靠的数据传输服务,数据无差错,无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制
2 数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收
4 原始套接字(SOCK_RAW) 可以对较低层次协议如IP,ICMP直接访问

1.4 协议protocol

No. 参数 含义
1 IPPROTO_TCP TCP
2 IPPROTO_UDP UDP

1.5 五要素

  • 协议
  • 本地地址
  • 本地端口
  • 远程地址
  • 远程端口

2.协议

  • 概念
    接头暗号

2.1 TCP(Transmission Control Protocol)

特点 数据传输方式 类比
面向连接 数据流 大巴车(人满发车,定点发车),打电话(确保信息准确送达)

2.1.1 三次握手/四次挥手

  • 作用
    通信双方必须互相确定对方的存在

  • TCP连接与断开

TCP连接与断开
  • 三次握手
三次握手
三次握手
  • 四次挥手
四次挥手
  • 报文标识
No. 报文标识 英文 含义
1 SYN synchronous 建立连接
2 ACK acknowledgement 确认
3 FIN finish 结束
4 PSH push 传送
5 RST reset 重置
6 URG urgent紧急
  • 序列号
No. 英文 含义
1 Sequence number 顺序号码
2 Acknowledge number 确认号码

序列号是一个32位(bit)的随机数。用来保证传送数据包的顺序。


《TCP/IP详解 卷1:协议》

如何确保数据没有损坏?
数据校验:校验和(发送的数据包的二进制相加然后取反)
如何确保数据发送过去了?
确认应答:接收方收到报文会发送确认。
超时重传:发送方发送一段时间后没收到确认会重新发送。
如何确保数据及时到达?
流量控制:当接收方来不及处理发送过来的数据,能提示发送方降低发送的速率,防止包丢失。
拥塞控制:当网络拥塞时,发送方会减少数据的发送。

  • 应用

下载文件
数据完整性要求高
数据可靠性要求高
传输性能要求低


TCP如何实现可靠性?

  1. 准确:连接管理(三次握手四次挥手)
  2. 安全:数据校验、确认应答、超时重传
  3. 迅速:流量控制

2.2 UDP(User Datagram Protocol)

特点 数据传输方式 类比
无连接 数据报 出租车(随到随走),发短信(不是关心对方马上收到)
  • 分类
No. 分类 举例
1 单播(unicast) 私聊,爱奇艺视频
2 广播(broadcast) 广告,病毒
3 多播/组播(multicast) 群聊,春晚直播
  • 区别

3.路径

3.1 IP(Internet中主机的标识)

3.1.1 分类

32位(IPV4)/128位(IPV6)

3.1.2 表示形式(常用点分形式)

No. 协议 形式 e.g.
1 IPv4 点分十进制 192.168.0.1
2 IPv6 点分十进制 ::192.168.0.1
3 IPv6 点分十六进制 ::C0A8:0001

3.1.3 特例

No. IP地址 地址类型 作用
1 0.0.0.0 通配地址 主机上所有IP,多网卡共用
2 127.0.0.1 回环地址 本地虚拟接口,无网卡可用,检查本地网络协议
3 255.255.255.255 广播地址 受限广播地址,当前路由器均不转发此类广播
4 XXX.XXX.XXX.255 广播地址 子网广播地址
5 XXX.XXX.255.255 广播地址 全子网广播
6 224.0.0.0~239.255.255.255 组播地址 详细参见组播地址分类
  • 组播地址分类
No. 范围 名称 作用
1 224.0.0.0~224.0.0.255 链路组播地址 路由协议和其它用途保留的地址
2 224.0.1.0~238.255.255.255 用户组播地址 用于全球范围(如Internet)或网络协议
3 239.0.0.0~239.255.255.255 本地组播地址 内部使用

3.1.4 域名

DNS(Domain Name System,域名系统),作为域名和IP地址相互映射的一个分布式数据库。

电话号码与人名
IP与域名

3.2 端口(区分一台主机接收到的数据包应该转交给哪个进程来进行处理)

查看端口

netstat –apn

3.3 类比

  • 火车站与站台
  • 飞机场与登机口
  • 公司与办公室
  • 银行与窗口柜台
  • IP与端口

4.字节序

No. 类型 简写 本质 e.g.
1 大端 BE(big endian) 将高序字节存储在起始地址 IBM、网络
2 小端 LE(little endian) 将低序字节存储在起始地址 Intel

查看当前CPU支持的字节序:lscpu

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,568评论 2 57
  • 网络模型 物理层 物理层表示的是比特流传输,通常包括串口/COM口、并行/LPT口、USB、网线接口、电话线接口;...
    秋风弄影阅读 693评论 0 2
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,042评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,028评论 6 174
  • 作者:Poll的笔记博客出处:http://www.cnblogs.com/maybe2030/本文版权归作者和博...
    wshxj123阅读 2,390评论 0 19