网络编程 --------- 1、网络编程基础知识

1、通信

通信的本质其实就是某种物理信号的传输

通信需要具备的两个基本条件:

(1)媒介(物理层面),例如:线缆、光纤

(2)协议(软件层面),例如:网络协议

2、网络

网络是一种连接计算机主机和设备的方式,它使数据可以透过网络媒体传播。全球互联网的始网叫做阿帕网,为了使各种不同的计算机之间互联,阿帕网制定一套计算机通信协议(即TCP/IP协议) ,它们针对计算机如何连接和组网 做出了详细的规定。

网络采用 分而治之 的方法

把网络的功能划分成不同的模块,用分层的形式有机的组合在一起。在每一层定义了很多协议 这些协议的总称 就是 TCP/IP协议 。且每层实现不同的功能,每层之间 向上一层提供服务,同时使用下一层提供的服务

网络体系结构 指的是网络的层次结构 和 每层使用的协议

两个非常重要的体系结构:

OSI
TCP/IP

3、网络协议层次模型

功能模块之间存在相互调用的关系 ----> 层次关系

1) OSI 开放式系统互联 Open System Interconnect

七层模型 (理想化模型)

应用层 :提供各种应用程序的接口

让你的系统知道你的数据包 是哪一个应用程序发出去的

表示层 :转换数据格式 以及 加密解密

主要是对发送/接收的数据 加密解密 压缩解压缩

确保一个系统的应用程序发送的数据 能够被另一个系统的应用程序接收和识别

会话层 : 负责建立连接、维护会话 和 断开连接

传输层 :主要负责端到端的数据传输

主要起到可靠传输的作用,建立端到端的连接,定义一些数据传输协议和端口

网络层 :寻址 和 路由

主要负责将数据包从源地址 传输到 目标地址

数据链路层 :差错校验、链路管理、流量控制

主要将收到的数据包进行 物理地址(如MAC地址)的封装和解封装

物理层:主要是定义物理设备的标准

2)TCP/IP 四层模型

应用层

定义了各种应用程序之间的通信协议

如:

HTTP 超文本传输协议

FTP 文件传输协议

SMTP 简单邮件传输协议

SSH 安全的远程登录协议

Telnet 远程登录协议

...

传输层

主要负责端到端的数据传输,解决数据如何传输的问题

TCP :传输层控制协议 Transport Control Protocol 类似于 "打电话"

是一种面向连接的传输层协议,能够提供可靠的通信(数据无误、不丢失、不重 复、按序到达)

---> 建立连接、三路握手、四次挥手、重发机制

UDP : 用户数据报协议 User Datagram Protocol 类似于 "发短信"

是一种不可靠的无连接的传输层协议,在数据发送之前,不需要连接

可以进行高效的数据传输 "实时实用"

网络层

主要负责将数据包从源地址 传输到 目标地址,实现不同网络之间的数据交换

IP协议 :Internet Protocol 互联网协议 逻辑地址(IP地址)

网络接口层(数据链路层/物理层)

主要负责将数据包从网络层传递到物理层,实现物理层的传输

**注意:**网络数据是如何传输的?

分层传输

数据的封装和拆包的过程

每一层实现各自的功能和协议

4、常见的网络设备

集线器(物理层)

把数据传输到其他的端口

交换机(数据链路层)

物理地址(如MAC地址)的集合

路由器(网络层)

路由选择协议 负责选择最佳的路,选择网络数据的下一站

互联网 将所有的网络连接到一起

网关 实现不同网络之间的通信

==========================

ps. 路由器:是使用IP地址寻址,实现从源IP地址 到 目标IP地址的端到端的通信

工作原理:
(1)路由器收到数据包,先会提取目标IP地址和子网掩码,计算目标的物理地址
(2)根据目标物理地址 查询路由表,如果找到了的目标物理地址,就从相应的出口发送数据到下一站
(3)如果没有找到,就看是否有默认路由,如果有,就从默认路由发送数据到下一站
(4)如果没有指定默认,向源地址发送不可达报文,通知源地址找不到目标地址
(5)如果是直接路由,就直接发送数据到下一站

5、互联网的地址 IP地址

IP地址 :Internet Protocol Address 互联网协议地址

互联网网上的每一个接口(网卡)必须要有一个唯一的ip地址 ,协议上的逻辑地址,进行网络通信 用这个ip地址 唯一标识一台计算机

ipv4 : 32位 4个字节

ipv6 :128位 16个字节

1)ipv4地址

表现形式: 点分十进制

如:192.168.31.111

172.4.0.1

最后都会转换成一个无符号的32位的整数

组成:

网络号 用来表示每一个局域网

主机号 用来表示某个特点的局域网中的主机号

分类:
A类地址 0 + 网络号(7bits) + 主机号(24bits)
ip地址的范围 私有ip的范围
0.0.0.0或1.0.0.0 ~ 127.255.255.255 10.0.0.0 ~ 10.255.255.255

B类地址 10 + 网络号(14bits) + 主机号(16bits)
ip地址的范围 私有ip的范围
128.0.0.0 ~ 191.255.255.255 172.16.0.0 ~ 172.31.255.255
C类地址 110 + 网络号(21bits) + 主机号(8bits)
ip地址的范围 私有ip的范围
192.0.0.0 ~ 223.255.255.255 192.168.0.0 ~ 192.168.255.255

D类地址 1110 + 多播地址 (28bits)
224.0.0.0 ~ 239.255.255.255

E类地址 留待后用
240.0.0.0 ~ 255.255.255.255

特殊的IP地址
127.0.0.1 回环地址 本地测试用
169.254.0.0 ~ 169.254.255.255 自动配置地址 本地链路地址,用于主机自动获取地址失败后的临时通信
192.168.0.0 ~ 192.168.255.255 局域网地址

问:在设置一个ip地址,如何指定哪些是主机号,哪些是网络号?

答:netmask子网掩码 ---> 用来指定ip地址中,哪些是网络号,哪些是主机号 ,netmask中 为1的位 表示网络号为0的位 表示主机号 。

例子:

ip 192.168.31.104

netmask 255.255.255.0

192.168.31.104

& 255.255.255.0


192.168.31.0 网络号

6、端口

TCP 和 UDP 采用无符号16位端口号 来表示应用程序,TCP和UDP 的端口号是独立的。ip地址用来唯一标识网络中的一台计算机,一台主机可能有多个网络应用程序

一台主机网络应用程序由 : ip地址 + 传输层协议(TCP/UDP) + 端口号 共同确定的 。

端口号 本质上是一个无符号的short类型的整数: 0 ~ 65535

众所周知的端口号: 1 ~ 1023

20/21 ftp

22 ssh

23 telnet

25 smtp

80 http

443 https

53 dns

69 tftp

5900 vnc

...

注册端口号: 1024 ~ 49151

动态/私有端口: 49152 ~ 65535

7、总结

1)网络层次模型

OSI 七层模型

TCP/IP 四层模型

  1. TCP

UDP

  1. IP地址 + 端口号
相关推荐
音徽编程2 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
幺零九零零3 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
23zhgjx-NanKon3 小时前
华为eNSP:QinQ
网络·安全·华为
23zhgjx-NanKon3 小时前
华为eNSP:mux-vlan
网络·安全·华为
点点滴滴的记录3 小时前
RPC核心实现原理
网络·网络协议·rpc
Lionhacker4 小时前
网络工程师这个行业可以一直干到退休吗?
网络·数据库·网络安全·黑客·黑客技术
程思扬5 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
ZachOn1y5 小时前
计算机网络:运输层 —— 运输层概述
网络·tcp/ip·计算机网络·运输层
佚明zj5 小时前
【点云网络】voxelnet 和 pointpillar
网络
转世成为计算机大神5 小时前
网关 Spring Cloud Gateway
java·网络·spring boot·1024程序员节