Linux系统编程1:Socket编程的一些概念

1.套接字

1.1 什么是socket

  • socket是一个编程接口
  • socket是一种特殊的文件描述符
everything in Unix is a file

1.2 协议域domain

No.参数含义
1AF_INETIPv4
2AF_INET6IPv6
3AF_LOCALUnix域

1.3 类型type

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

1.4 协议protocol

No.参数含义
1IPPROTO_TCPTCP
2IPPROTO_UDPUDP

1.5 五要素

  • 协议
    两台电脑或者两台电脑上的软件进行通信,之间需要使用相同的协议
  • 本地地址
    本地主机的IP地址
  • 本地端口
    软件需要被识别所使用的端口
  • 远程地址
    对方主机的IP地址
  • 远程端口
    对方主机接收/发送数据的端口

2.协议

  • 概念
    接头暗号

2.1 TCP(Transmission Control Protocol)

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

2.1.1 三次握手/四次挥手

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

  • TCP连接与断开

在这里插入图片描述

  • 三次握手
    在这里插入图片描述
    在这里插入图片描述

  • 四次挥手
    在这里插入图片描述

  • 报文标识

No.报文标识英文含义
1SYNsynchronous建立连接
2ACKacknowledgement确认
3FINfinish结束
4PSHpush传送
5RSTreset重置
6URGurgent紧急
  • 号码:防止在第一次发送的时候服务端长时间未响应,那颗客户端会继续再发送一个,当服务端接收到这个请求,然后返回一个响应,他会把刚开始建立连接的请求号码加上再返回回来,由客户端确认究竟是哪一次被连接上了,数据被接受到了。这种标记通常占一位,放在一个字节当中的某一位,用来表示正在做什么事
No.英文含义
1Sequence number顺序号码
2Acknowledge number确认号码
  • 应用

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

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.
1IPv4点分十进制192.168.0.1
2IPv6点分十进制::192.168.0.1
3IPv6点分十六进制::C0A8:0001

3.1.3 特例

No.IP地址地址类型作用
10.0.0.0通配地址主机上所有IP,多网卡共用
2127.0.0.1回环地址本地虚拟接口,无网卡可用,检查本地网络协议
3255.255.255.255广播地址受限广播地址,当前路由器均不转发此类广播
4XXX.XXX.XXX.255广播地址子网广播地址
5XXX.XXX.255.255广播地址全子网广播
6224.0.0.0~239.255.255.255组播地址详细参见组播地址分类
  • 组播地址分类
No.范围名称作用
1224.0.0.0~224.0.0.255链路组播地址路由协议和其它用途保留的地址
2224.0.1.0~238.255.255.255用户组播地址用于全球范围(如Internet)或网络协议
3239.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值