Linux:网络编程基础
目录
1.OSI模型:理想模型(7层——物数网传会表应,最全,每一层功能不一样)
1.基础知识
1.1网络干的事
传递信息。(IT:Information Technology)
1.2协议
通信双方约定的一套通信标准(只有有协议才能破译对方发的是啥)。接下来我将学习的协议是国际通用标准,在国际上通用。(私有协议使用范围更小。)
1.3国际通用协议模型
1.3.1 OSI模型:理想模型(7层——物数网传会表应,最全,每一层功能不一样)
应用层:要传递的数据和信息
表示层:是否对数据加密、以何种形式表示(只要通过设备,就会有信息安全问题)
会话层:是否需要建立会话链接(如看直播,进行连续收发,避免发一次收一次)
传输层:传递数据的方式【①数据包传输:一包一包地法 ②流式传输:先建立一个通道,传输是连续的】(类似快递:空运,陆运...)
网络层:数据的路由(数据从A到达B)(跨局域网的通信)
数据连接层:局域网内部的通信
物理层:物理介质的连接
搞懂理想模型推荐书目:
1.3.2 TCP/IP模型(实用模型/工业模型-OSI 模型的简化版):
应用层:(由应用层,表示层,会话层合并)传输的数据——为用户提供所需要的各种服务
传输层:传输的方式(TCP还是UDP)
网络(际)层:如何发送数据——主要解决主机到主机的通信(端到端)问题。
网络接口层:(由数据链路层,物理层合并)用于屏蔽硬件差异,负责监视数据在主机和网络之间的交换。
注意:每一层完成的功能和OSI模型是一样的
1.4国际通用模型协议
1.4.1.应用层:
HTTP协议:超文本传输协议——用于网页(超文本:一个文本里既包含字又包含图,视频等等,如网页)(网页-存于服务器->性能很强大的电脑->作用:为网络中的主机提供服务。 每次查看网页,本质上是从服务器下载网页到本地,每次下载网页这种功能就具象成了一种HPTTP这种协议)
HTTPS协议:加密后的HTTP协议——用于银行。加密传输,收到后解密,更安全(传输超文本携带密码,防止钓鱼网站)【所以 HTTPS协议用得比HTTP协议更多】
DNS协议:域名解析协议(将域名转换成IP地址)【∵①域名更容易记忆②不同地域的服务器可以设置相同的域名,输入域名可以方便访问最近的那个服务器】
TELNET协议:远程登陆协议
SMTP协议:邮件传输协议
MQTT协议:物联网传输协议——本质上是向服务器发送链接,可以向服务器发消息或者订阅服务器的消息,广泛用于物联网,∵通信量特别小
嵌入式相关协议
MTP:网络时钟协议——智能手机自动网络校准时间
SNMP(光懂它就能找到不错的工作):简单网络管理协议(实现对网络设备集中式管理)
RTP/RTSP:用传输音视频的协议(安防监控)
...
1.4.2.传输层(网络编程主要处理的就是它)
1.4.2.1 端口号
概念:是一个16位数字,介于1-65535
作用:区分一台主机接收到的数据包应该转交给哪个任务(进程、线程)来进行处理,使用端口号来区别
端口分类:端口号一般由IANA(Internet Assigned Numbers Authority)管理
众所周知端口:1~1023(如:FTP:21,SSH:22,HTTP:80,HTTPS:469)
保留端口:1024-5000(不建议使用)
可以使用端口:5000~65535
TCP端口号与UDP端口号独立
应用:
网络里面的通信是由 IP地址+端口号 来唯一决定
1.4.2.3 字节序
字节序是指不同的CPU访问内存中的多字节数据时候,存在大小端问题
应用:网络传输的时候采用大端模式-网络字节序(进行网络通信时需进行本地字节序和网络字节序的转换,不管本地是小端存储还是大端存储,进入网络都转换成大端)
//主机字节序到网络字节序 u_long htonl(u_long hostlong): u_short htons(u_short short): //网络字节序到主机字节序 u_long ntohl (u_long hostlong); u_short ntohs(u_short short);1.4.2.3 协议
TCP(Transfer Control protocol,传输控制协议):提供面向连接的,一对一的可靠数据传输的协说
UDP (user Datagram Protocol,用户数据报协议):提供不可靠(发太快会丢包),无连接的尽力传输协议,适合音视频这类对实时性要求高的场景。
SCTP(Stream Control Transmission Protocol,流控制传输协议):TCP的增强版,提供面向连接的,多对一或多对多的可靠数据传输协议【军方使用】
UDP协议:用户数据报协议(数据报:一包一包地传递 问题:易丢包,对方有没有收到,这个地址对不对,都无反馈)
特点:①UDP资源开销比较小
②UDP传输机制简单
③UDP传输不安全、不可靠
④UDP是无连接的
TCP协议:传输控制协议
特点:①TCP资源开销比较大(因为包头长)
②TCP机制复杂
——通信前: 通过 “三次握手” 机制建立通信(SYN:请求应答信号“听到请回答”)(ACK:应答信号)
——通信过程中:确认机制(以对方收到多少字节为准而不是我发了多少字节)
——流量控制、拥塞控制【可以调节发送窗口和接收窗口进行流量控制】(如百度网盘下载的很慢-通过调节流量控制)
——通信结束后: ”四次挥手“ 结束连接(FIN:结束连接)
③TCP传输安全、可靠
④TCP有链接(只要没手动断开就一直连)
1.4.3 网络层
协议:
IP: Intemet protocol(分为IPv4和IPv6)
ICMP: Internet控制管理协议,ping命令属于ICMP【ping为网络层的命令,用于检测端到端是否接通】
IGMP: Intermet分组管理协议,广播、组播
IPv4协议(IP地第4个版本version4):
1.IP地址(如:192.168.0.107)
1.1 IP地址 == 网络位(192.168.0) + 主机位(107号主机)
1.2 IP地址分类
IPV4:采用32位的整数来表示(上世纪网络设备不多所以用的32位)(如:192.168.0.107)
IPV6:采用了128位整数来表示(本世纪网络设备大增,IPv4不够用,才有的 IPV6。夸张地说:地球上每一粒沙子都能分配一个IP地址)(如:fe80::20c:29ff:fec1:7619)
1.3 IP地址形式
点分形式:192.168.0.107
二进制形式:11000000.10101000.00000000.01101011
域名形式:www.baidu.com
1.4 特殊的IP地址
2.网络位:指在哪个网段之内,网段都有编号,一个网段就是一个局域网编号(192.168.0)
网段号:网络位不变 ,主机位全为0。如(192.168.0.0)
3.子网掩码:用来区分IP地址的网络位和主机位,子网掩码是1的部分表示网络位,子网掩码是0的部分表示主机位【∵有可能前三部分是网络位,第四部分是主机位;也可能前两部分是网络位,后两部分是主机位】
应用:网络位相同的IP地址可以直接通信,网络位不同(则局域网不同)不能直接通信,不同局域网通信需要借助路由器完成数据的转发
4.一个局域网内能容纳主机的个数 :2^主机位-2 (减去网段号和广播地址)
网段号:(网络位不变,主机位全为0) 【用于标识局域网】 不能使用
广播地址:(网络位不变,主机位全为1) 【只要发一条信息,局域网内都所有主机能收到】 不能使用
5.IP地址的分类
6.公有地址和私有地址
公有地址:能够直接上互联网的地址,如服务器IP地址(需向移动电信连通运营商申请)
私有地址:只有局域网内能直接访问,不能直接上互联网的地址,需通过地址转换协议转换成公有IP地址上网。谁都先还要公有IP地址,但是因为IP地址有限,所以需私有IP地址来节省共有IP地址。局域网内大家的私有IP地址通过路由器后会转换成一个公有IP地址实现上网(可能一个小区,一个省份就那么几个公有IP地址)
A类私有IP地址:10.0.0.0-10.255.255.255
B类私有IP地址:172.16.0.0-172.31.255.255
C类私有IP地址:192.168.0.0-192.168.255.255
应用:
①同一网段内的IP地址能够直接通信——插上网线直接通信(不同网段也能通信,但是是间接,且必须是公有网段)② 交换机不能跨局域网通信,只有路由器可以跨局域网通信,现在把交换机和路由器做一起了
发送数据:逐层加包头接收数据:逐层拆包头
IPv6协议(IP地第6个版本version6)(不过多讲解)
1.4.4 网络接口层
MAC地址:48位全球唯一,网络设备的身份标识
协议:
ARP协议:根据IP地址(IP地址不唯一)获取MAC地址(网卡地址,唯一)
RARP协议:根据MAC地址获取IP地址
应用:跨局域网通信使用IP地址(因为需要用到网络层),局域网内部通信使用MAC地址
2.网络的配置及相关命令
2.1虚拟机网络的两种工作模式:
2.1.1桥接模式:
Ubuntu与Windows网络相互独立,每个系统会单独分配一个IP地址
可以作为局域网的服务器(因为IP地址独立)
作为服务器端使用必须使用桥接模式,因为Ubuntu必须有一个真实的独立的IP地址
2.1.2NAT模式
1.Ubuntu与Windows网络关联,Ubuntu相当于Windows一个软件,Ubuntu lP地址是虚拟出来的,无法作为服务器
2.无法作为局域网服务器
作为客户端所用优先选择NAT模式,因为Windows有网,Ubuntu就有网
2.2相关命令
ifconfig命令:
ifconfig
功能:查看本机网卡的IP地址
ifconfig 网卡名 IP地址/24 up
功能:用 ifconfig 临时设 IP(重启失效):
#示例:将ens33网卡设置为192.168.0.108,子网掩码设置为255.255.255.0启动网卡
sudo ifconfig ens33 192.168.0.108/24 up
#关闭/开启网卡(开启需加sudo)
ifconfig 网卡名 down/up
示例:
ping命令
发送连接请求,测试与某个IP地址是否能够连通
ping www.baidu.com
只要能ping通,就能通信
netstat -anp命令
查网络连接