linux网络编程概述

linux网络编程

进程间的通信方式:

  • 管道:用于父子进程的通信
  • 消息队列:会在内核生成一系列的链表消息
  • 共享内存:通过内核创建一个大家独能看见的空间
  • 信号:通过pid号标识符发消息
    -信号量:对共享内存这些临界资源的P、V控制

这些所有的通信方式都是基于linux内核的,所以不能进行多机通信

多机通信大概有:linux服务器跟安卓手机,IOS,51单片机这些机子的通信

所以基于对多机的通信,就需要网络编程

网络编程:

两台终端需要相互找到对方,才能相互通信,所以网络编程就必须要有地址

地址
IP地址
每个设备都有一个来标识是那一台设备
端口号
便于客户端接入PC服务端里找到对应的服务

当两台设备相互找到后,需要进行相互的交流,就涉及到通信协议:

  • 通信协议就是一种字典,也是一种数据格式,当两个人想要对话时,需要两个人都会一种语言,才能交流,哪怕不会语言,但有了一部字典后,就可以相互对照查询后,读出对应的信息
  • 就相当于电影里的摩斯密码,一个人可以靠三短一长来沟通,但想要知道它的意思就需要有一本摩斯密码本,根据摩斯密码本来翻译获得人类能识别的信息,达到沟通的目的
通信协议
HTTP
TCP
UDP

单片机的串口通信业需要有串口协议

socket——套接字网络编程:

TCP:面向连接,当A、B之间通信,相当于打电话

  • A拨号给B,B接通后就可以通话
  • A对于B的情况是能马上知道的
  • 连接可靠
  • 发指令的时候,需要对传送的数据有很强的精准留存作用

UDP:面向报文,不关心对象是否收到,相当于发短信

  • A发给B信息时不知道B是否有收到,或者收到是否有看到信息
  • 连接不可靠
  • 适合数据量大的传送,在传送视频的时候,一般在传送过程中丢失了5bit对整体影响较小,视频只是会有一丝卡顿,或一点小雪花
面向连接
面向报文
socket/套接字
TCP
AB之间交换数据像打电话
UDP
AB之间数据交换相当于发短信

总结:TCP/UDP对比

1、TCP面向连接,(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前是不需要建立连接的

2、TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

4、每一条TCP连接只能是点到点的连接;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP首部开销20字节;UDP的首部开销小,只有8字节

6、TCP的逻辑通信信道是全双工的可靠信道;UDP则是不可靠信道

端口号的作用

一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等

这些服务完全可以通过1个IP地址来实现。

那么,主机是怎么区分不同的网络服务呢?

显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。

实际上是通过“IP地址+端口号”来区分不同的服务。
端口提供了一种访问通道,服务器一般都是通过知名端口号来识别的。

例如:对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69

对于linux应用层来说,端口号一般选5000~10000中的

字节序

字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。

1. Little endian(小端):将低序字节存储在起始地址
2. Big endian(大端):将高序字节存储在起始地址

  • 例子:在内存中双字0x01020304(DWORD)的存储方式

内存地址

4000&4001&4002&4003
LE 04 03 02 01
BE 01 02 03 04

低字节序内存地址数据位置
高地址4003000 000 0101高序
4002000 000 1002
4001000 000 1103
低地址(起始位)4000000 001 0004低序

例子:如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为

big-endianlittle-endian
0x0000 0x12 0xcd
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12

x86系列CPU都是little-endian的字节序.

网络字节序是大端字节序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值