当前位置: 首页 > news >正文

Linux操作系统 -socket网络通信

同一台主机之间的进程

1.古老的通信方式
        无名管道  
        有名管道  
        信号

2、IPC对象通信 system v   
        消息队列
        共享内存
        信号量集 

由于不同主机间进程通信

3.socket网络通信

国际网络体系结构: 七层OSI模型(理论模型)

    应用层:要传输的数据信息,如文件传输,电子邮件等
    表示层:数据加密,解密操作,压缩,解压缩
    会话层:建立数据传输通道
    传输层:传输的方式  UDP  TCP   端口号
    网络层:实现数据路由    路由器  ip
    数据链路层:封装成帧,点对点通信(局域网内通信),差错检测   交换机 ARP地址解析协议
    物理层:定义物理设备标准,比如网线,光纤等传输介质   比特流  

TCP/IP模型:  工业模型

4层

    应用层:HTTP、HTTPS、FTP、TFTP、MQTT
    传输层:TCP、UDP
    网络层:IP
    网络接口层:网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路

5层
    应用层:HTTP、HTTPS、FTP、TFTP、MQTT
    传输层:TCP、UDP
    网络层:IP
    数据链路层:封装成帧,点对点通信(局域网内通信),差错检测   交换机
    物理层:定义物理设备标准,比如网线,光纤等传输介质   比特流  bit

协议:

应用层协议:
        FTP:文件传输协议(实现文件上传/下载)
        TFTP:简单文件传输协议(实现文件上传/下载)
        HTTP:超文本传输协议(实现超文本集视频、图片、文字于一体的文件类型传输
        HTTPS:加密版超文本传输协议
        MQTT:消息队列遥测传输协议(物联网传输)

传输层协议:
        UDP:用户数据报协议
        TCP:传输控制协议

网络层:
        IP协议
        192.168.1.128
        IPv4    32位
        IPv6    128位

        网络位:该IP地址位于哪个网段(局域网)内
        主机位:这个网段(局域网)第几台主机

        子网掩码: 用来区分IP地址的网络位和主机位,搭配IP地址使用。
        子网掩码是1的部分对应IP地址的网络位
        子网掩码是0的部分对应IP地址的主机位

        公有IP:由电信公司直接分配,并需要付费的IP地址, 可以直接访问internet
        私有IP:不能直接访问internet的ip地址

网络编程之 UDP

UDP:用户数据报协议

1、特性:         
                1.发送数据时不需要建立链接,节省资源开销
                2.不安全不可靠的协议        //一般用在实时性比较高的广播,组播//vnc
                3.面向报文。
                4.资源开销小

2、框架:  

C/S模式  :有一个专用的客户端    

server:socket() ===>bind()===>recvfrom()===>close()
client:socket() ===> bind()===>sendto() ===>close()

B/S模式    :有一个通用的客户端浏览器  

套接字编程接口: 

套接字:通信对象的抽象, 网络通信的端口,一个通信链的句柄。

1.socket: 创建一个用来通信的接口(文件描述符)

int socket(int domain, int type, int protocol);

2.sendto:向一个IP地址和端口发送数据信息

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
                      const struct sockaddr *dest_addr, socklen_t addrlen);

3.htons ---> 主机转网络字节序

主机:小端   host
网络:大端   network

4.inet_addr

将字符串IP地址转换成二进制IP地址形式

in_addr_t inet_addr(const char *cp);

5.bind:将一个套接字与IP地址和端口号绑定(只能绑定自己的IP地址)

int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

6.recvfrom:接收网络发送的数据信息

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);

具有阻塞功能(直到接收到数据,才会继续向下执行)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深入理解计算机系统 CSAPP 家庭作业11.10
  • 【资料分享】2024钉钉杯大数据挑战赛A题思路解析+代码演示
  • vue 当前页面刷新 provide + inject
  • pytorch backbone
  • 代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
  • Win11+Anaconda+VScode:mmpose环境配置与基本使用
  • Springboot @Validate @Valid 基于复杂嵌套对象的参数校验示例
  • SQL 基础知识
  • Springboot 多数据源事务
  • 代码随想录算法训练营day22 | 77. 组合、216.组合总和III 、17.电话号码的字母组合
  • kettle从入门到精通 第八十一课 ETL之kettle kettle中的json对象字段写入postgresql中的json字段正确姿势
  • CTF之网站被黑
  • Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示
  • 大厂面经:滴滴大数据面试题及参考答案(3万字长文)
  • 返回倒数第 k 个节点 - 力扣(LeetCode)C语言
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Codepen 每日精选(2018-3-25)
  • crontab执行失败的多种原因
  • CSS 专业技巧
  • gf框架之分页模块(五) - 自定义分页
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Mithril.js 入门介绍
  • orm2 中文文档 3.1 模型属性
  • Python 基础起步 (十) 什么叫函数?
  • 测试开发系类之接口自动化测试
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 如何设计一个微型分布式架构?
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 数据仓库的几种建模方法
  • 用quicker-worker.js轻松跑一个大数据遍历
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​第20课 在Android Native开发中加入新的C++类
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • $(selector).each()和$.each()的区别
  • (+4)2.2UML建模图
  • (day18) leetcode 204.计数质数
  • (备份) esp32 GPIO
  • (二)springcloud实战之config配置中心
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (函数)颠倒字符串顺序(C语言)
  • (十八)三元表达式和列表解析
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Sql Server 保留几位小数的两种做法
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net 基于MiniExcel的导入功能接口示例
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)