网络编程基础(1)

目录

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

1、网络

2、互联网

3、ip地址

(1)ipv4:

(2)ipV6:1

(3)IP地址的组成:

(4)Linux查看IP地址:ifconfig

4、mac地址

[5、ping Ip地址](#5、ping Ip地址)

6、端口(软件层面)

[(1)查看端口的命令 netstat -natp](#(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>
相关推荐
明月看潮生12 分钟前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
龙哥说跨境1 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我1 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023912 小时前
06 网络编程基础
java·网络
海绵波波1073 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
热爱跑步的恒川6 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面7 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程9 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
幺零九零零10 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
23zhgjx-NanKon10 小时前
华为eNSP:QinQ
网络·安全·华为