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

网络编程基础(1)

目录

网络编程解决是跨主机的进程间通讯

1、网络

2、互联网

3、ip地址

(1)ipv4:

 (2)ipV6:1

(3)IP地址的组成:

(4)Linux查看IP地址:ifconfig

4、mac地址

5、ping  Ip地址

6、端口(软件层面)

(1)查看端口的命令 netstat -natp

7、套接字地址

8、协议

9、tcp协议

10、网络分层模型

11、数据链路层

12、网络层

13、传输层

  (1)TCP协议(传输控制协议)

(2)UDP协议(用户数据报协议)

(3)SCTP协议(流控制传输协议)

14、应用层

15、网络应用程序通讯流程

16、字节序列

17、网络编程头文件


网络编程解决是跨主机的进程间通讯

1、网络

把不同的主机链接起来构成了网络

简单网络示意图

2、互联网

把网络和网络连接起来就是互联网

3、ip地址

IP地址(我在哪里):在网络中需要通讯就需要把网络标识出来

给因特网上的每一主机(路由器)的每一个接口分配的一个在全世界范围内唯一的标识符

(1)ipv4:

    四个字节,每个字节8位,共32位,用十进制表示

 (2)ipV6:1

    28位,用:分成8段,每个段16位,用4个16进制数表示

(3)IP地址的组成:

IP地址组成

有了IP地址寻址特别方便

IP地址不是唯一的,会随着网络环境的变化而变化 

(4)Linux查看IP地址:ifconfig

4、mac地址

Mac地址(我是谁):计算的网卡固化的地址,物理地址,硬件地址,精确定位的一个信息,网络设备的厂家直接烧在网卡上的,理论上mac地址是唯一的,但是因为mac地址可以通过程序修改,所以也又可能会重复,只要不手动更改,他就是全世界唯一的,48位。

5、ping  Ip地址

查看是否联通

6、端口(软件层面)

主机上应用程序的一个代号,表示的是一个进程,通讯是进程之间的

(1)查看端口的命令 netstat -natp

7、套接字地址

套接字对外提供的是一个进程间通信的能力(跨越主机),不跨主机也能做

ip(ip地址)+port(端口)

8、协议

规定,共同遵守的一个规则,在什么场合下使用什么样的协议

9、tcp协议

面向连接 可靠的流式服务

10、网络分层模型

OSI七层模型和tcp/ip协议族体系四层结构

11、数据链路层

数据链路层的主要功能:通过各种控制协议,将有差错的物理信通道变成无差错的、能可靠传输数据帧的数据链路层

12、网络层

实现数据包的选路和转发,通信的两台主机是不直接相连的,而是通过多个中间节点(路由器)连接的,网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。

网络层最主要的是IP协议,IP协议根据数据包的IP地址来决定如何投递他,如果数据包不能直接发送给主机,ip协议就会为他找一个合适的路由器,将数据包交给路由器来转发,多次重复这一过程,数据包最终到达主机,或者因为发送失败而丢弃。

网络层另外一个很重要的协议是ICMP协议,他是IP协议的重要补充,主要用于检测网络连接

ip协议为上层协议提供无状态、无连接、不可靠的服务

无状态:通讯双方不同步传输数据的状态,所以IP数据的发送传输、接收都是相互独立、没有上下文关系的,缺点是无法处理乱序、重复的IP数据包。

无连接:IP通信双方都不长久的维持对方的任何信息,这样上层协议每次发送信息都得明确指明对方的IP地址

不可靠:IP协议不能保证数据报准确的到达接收端,他只是承诺尽最大努力

 13、传输层

传输层:为两台主机上的应用程序提供端到端的通信,与网络层使用的逐跳通信不同,传输层只关心起始端和目的端,而不在乎数据包的中转过程

传输层的主要协议有三个:TCP协议  UDP协议和SCTP协议

(1)TCP协议(传输控制协议)

为应用层提供可靠的面向连接的和基于流的服务,TCP协议使用超时重传,确认应答等方式来确保数据包被正确的发送至目的端,TCP协议是可靠的,使用TCP协议通讯的双方必须先建立TCP连接,并在内核中为该连接维持一些必要的数据结构,比如连接状态、读写缓冲区等,等通讯结束后,双方必须关闭连接以释放这些内核数据,TCP服务是基于流的,基于流的数据没有长度限制,他远远不断的从通讯的一端流向另外一端,发送端可以逐个字节的向数据流中写入数据,接收端也可以逐个字节的将他们读出。

(2)UDP协议(用户数据报协议)

与TCP协议完全相反,他为应用层提供不可靠、无连接,基于数据报的服务,UDP协议无法保证数据从发送端正确的传输到目的端,如果发送失败,UDP也只是通知应用程序发送失败,使用UDP协议,应用程序通常要自己处理数据确定、超时重传。UDP协议是无连接的,每次通讯都需要指定接收端的地址,基于数据报的服务是相对于基于流的服务来说的,每次UDP数据报都有一个长度,接收端必须以该长度为最小单位,将其内容一次性读出,否则数据将被截断

(3)SCTP协议(流控制传输协议)

为了在因特网上传输电话信号而设计的

14、应用层

应用层负责处理应用程序的逻辑

15、网络应用程序通讯流程

1、发送数据,从应用层到传输层

2、传输层在数据前面加上TCP/UDP的报头,再发送给网络层

3、网络层再添加自己的IP报头后,发送给数据链路层

4、数据链路层将数据封装成能够在网络中独立传输的数据单元,即数据帧(加帧头和帧尾),将数据帧通过网络传输给另外一台主机

5、从下到上依次拆包,送到应用层,得到数据

16、字节序列

大端、小端

大端为网络字节序列

17、网络编程头文件

#include<sys/socket.h>
#include<netinet/in.h>
#include <arpa/inet.h>

http://www.lryc.cn/news/132816.html

相关文章:

  • Linux驱动开发(Day4)
  • LVS负载均衡群集部署(LVS-NAT模型实例)
  • 【仿写tomcat】五、响应静态资源(访问html页面)、路由支持以及多线程改进
  • stm32单片机/51单片机蜂鸣器不响(proteus模拟)
  • BERT、ERNIE、Grover、XLNet、GPT、MASS、UniLM、ELECTRA、RoBERTa、T5、C4
  • 主机防护的重要性和方式
  • 聚观早报 | 抢先体验阿维塔11座舱;本田和讴歌采用NACS充电标准
  • 思科计算机网络答案(包含第1~11章节)
  • 所见即所得,「Paraverse平行云」助力万间打造智能建造新图景
  • AI图片处理功能演示
  • CentOS系统环境搭建(六)——使用docker-compose安装redis
  • 个人论坛项目测试报告
  • 一起来学shiny把(4)—调控控件进行输出
  • VBIC卡管理系统设计与实现
  • 八种架构演进
  • 商城-学习整理-高级-分布式事务(十九)
  • Java学习笔记(三):面向对象
  • 电商项目part02 电商后台多数据源
  • 【C# 基础精讲】LINQ 基础
  • ChatGPT成为工作工具,具体都应用在哪些地方?
  • Shader学习(三)(片元着色器)
  • 谷歌推出首款量子弹性 FIDO2 安全密钥
  • 前端常用的三种加密方式(MD5、base64、sha.js)
  • alpine镜像时区设置
  • Java导入Excel,保留日期格式为文本格式
  • uploadifive php上传进度条插件 解决动态传参数问题
  • Lombok生成的Getter和Setter的名称对于“eMail”或“xAxis”等属性存在大小写转换异常
  • Redis基础概念和数据类型详解
  • C语言之extern “C“详解与使用方法
  • C++中的运算符总结(4):逻辑运算符(下)