网络编程基础
一 . 网络开发的两大架构:
(1) c/s(client server):客户端,指具体的软件
(2) b/s(brower server):浏览器端,通过输入网址,访问对方的服务器,对方的服务器响应请求之后,把对应的数据返回出来
对比: 未来更多的是b/s架构,免去下载的过程,节省了硬盘空间,更加提升效率和速度
二 . 网络的概念:
(1) IP地址: 标记一台机器的逻辑地址,是可变的, 是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。ip地址用来标记网络上的每一台主机,方便在收发数据,网络请求时能够找到响应;
IP地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。二者是主从关系。
ip地址分为两种 ipv4 和 ipv6: 分类ipv4 和 ipv6:
ipv4地址是一个32位的二进制数
ipv6地址是一个128位的二进制数
ipv4: 以4段点分十进制表示 X.X.X.X => 范围
0.0.0.0 ~ 255.255.255.255 地址范围2^32-1
ipv6 : 以8段冒分十六进制表示 X:X:X:X:X:X:X:X => 范围
0:0:0:0:0:0:0:0 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 地址范围2^128-1
ip地址的最后一位0或者255 两个数字不能用,一般最后一位0表达的是网段,255代表广播地址
(2) mac地址:标记一台机器的物理地址 , 是不可变的
(3) 网段: 作用,主要用来划分同一区域里的某些机器是否能够互相通信。在一个网段里可以不同过因特网,直接对话
判别的依据:如果IP地址和子网掩码相与得到的值相同就是同一网段
(4) 内网 : 以下地址为预留地址,永远不会被当做公网ip来分配
192.168.0.0 - 192.168.255.255
172.16.0.0 - 172.31.255.255
10.0.0.0 - 10.255.255.255
(5) 外网 : 在任何地方都可以访问的就是外网 (排除防火墙的因素)
(6) 子网掩码:区分网段和主机
255.255.255.0 / 255.255.0.0 / 255.0.0.0
ip1:192.168.10.12 ip2:192.168.1.16
# 案例一 # ip 192.168.31.43 11000000 10101000 00011111 00101011 # 子网掩码 255.255.255.0 11111111 11111111 11111111 00000000 # ip & 子网掩码 11000000 10101000 00011111 00000000 ip1的网段: 192.168.31.0 # ip 192.168.30.44 11000000 10101000 00011110 00101100 # 子网掩码 255.255.255.0 11111111 11111111 11111111 00000000 # ip & 子网掩码 11000000 10101000 00011110 00000000 ip2网段: 192.168.30.0 ip1的网段和ip2的网段不同,不一样,所以不在同一个网段不能通信 # 案例二 改变子网掩码 # ip 192.168.31.43 11000000 10101000 00011111 00101011 # 子网掩码 255.255.0.0 11111111 11111111 00000000 00000000 # ip & 子网掩码 11000000 10101000 00000000 00000000 ip1的网段: 192.168.0.0 # ip 192.168.30.44 11000000 10101000 00011110 00101100 # 子网掩码 255.255.0.0 11111111 11111111 00000000 00000000 # ip & 子网掩码 11000000 10101000 00000000 00000000 ip2网段: 192.168.0.0 ip1的网段和ip2的网段完全相同,所以在同一个网段可以通信 # ping 域名 可以查看网络是否通畅(顺便可以拿到ip)
(7) 端口: 是英文port的意译,是具体某个程序与外界通讯的出口, 通过IP+端口,可以找到世界上任何一台机器的任何一个软件
端口的范围: 0~65535,形式: 192.168.2.1:8000, 在自定义端口时,最好是8000以上.
20 端口:FTP 文件传输协议(默认数据口)
21 端口:FTP 文件传输协议(控制)
22 端口:SSH 远程登录协议
23 端口:telnet(终端仿真协议),木马 Tiny Telnet Server 开放此端口
25 端口:SMTP 服务器所开放的端口,用于发送邮件
80 端口:http,用于网页浏览,木马 Executor 开放此端口
443 端口:基于 TLS/SSL 的网页浏览端口,能提供加密和通过安全端口传输的另一种 HTTP
3306 端口:MySQL 开放此端口
(8) 局域网:在同一区域内由多台计算机互联形成通讯。【具有可重复的内网ip】
(9) 广域网:在不同区域内有多台计算机互联形成通讯。【具有唯一的公网ip】
(10) .osi 网络七层模型
应用层(应用层,表示层,会话层)
封装数据
依据不同的协议,封装对应格式的数据消息
HTTP [超文本传输协议]
HTTPS[加密传输超文本传输协议]
FTP [文件传输协议]
SMTP [电子邮件传输的协议]
传输层:
封装端口
指定传输的协议(TCP协议/UDP协议)
网络层:
封装ip
版本ipv4 / ipv6
数据链路层:
封装mac地址
指定链路层的协议(arp协议(ip->mac)/rarp协议(mac->ip))
物理层:
打成数据包,变成二进制字节流,通过网络进行传输.
(11) 交换机与路由器:
交换机:对同一网段的不同机器之间的进行数据转发的设备(每一台机器和交换机之间相连,形成通信)
交换机从下至上拆两层,这两层是物理层和数据链路层,可以找到mac
路由器:对不同网段的不同机器进行数据转发的设备(每一个局域网和路由器相连,形成通信)
交换机从下到上拆三层,就是物理层,数据链路层,和网络层,可以找到IP
局域网内的数据传输(通过交换机)
广域网内的数据传输(通过路由器)
外网之间的数据传输(交换机与路由器配合)
(12) arp协议: 通过IP找到mac
电脑a先发送一个arp的广播包,把mac地址标记为一个全FF-FF-FF-FF-FF-FF的广播地址
交换机接收到arp的广播包,从下到上进行拆包,拆2层,到数据链路层得到mac
发现mac是全F的广播地址,重新打包,交换机开始广播,所有连接在交换机上的设备都会收到arp广播包
各个主机开始拆包,对应mac为全FF广播地址可以跳过,继续向上找,发现ip不符合,直接舍弃改数据
路由器允许从下到上拆三层,拆到ip,得到对应的网段
打开路由器的对照表 网关->网段,重新打包,找到对应的接口发送数据包
对应的交换机得到数据包,重新从下到上拆包,2层,发现mac为全F,开始广播
目标主机接收到广播包,从下到上拆包,ip正确,符合自己的条件
目标主机会把ip->mac的映射关系的数据发送回当前的交换机,
此时,交换机通过单播,把对应的ip和mac发送回原来请求的主机
数据在通过路由器,交换机发送回去
原主机在得到了ip 和 mac 之后,
重新把真实数据进行打包,从而完成发送
如果没有目标主机mac地址,主机一开始会发送arp请求包(发出找mac的请求)
各大主机在接受arp请求包的时候,都会去对照自己本机当中的arp解析表(ip->mac)
如果没有,这个arp得请求包舍弃,
如果有,会把自己的ip和mac封装在arp的响应包当中给交换机进行单播
在回来的过程中,所有相应的主机都会拿响应包中的数据更新自己的arp解析表,方便下次使用.
(13) TCP协议:
TCP(Transmission Control Protocol)一种面向连接的、可靠的、传输层通信协议(比如:打电话)
优点:可靠,稳定,传输完整稳定,不限制数据大小
缺点:慢,效率低,占用系统资源高,一发一收都需要对方确认
应用:Web浏览器,电子邮件,文件传输,大量数据传输的场景
SYN : 创建连接
ACK : 确认响应
FIN : 断开连接
TCP的三次握手
客户端发送一个请求,与服务端建立连接
服务端接受这个请求,并且响应与客户端建立连接的请求
(服务端的响应和请求是在一次发送当中完成的)
客户端接受服务端的请求之后,把消息在响应给服务端
接下来客户端和服务端可以发送数据了.
每发送一个数据出去,对应的主机都会有一个回执消息,确认数据的接受情况,
如果没有得到回执消息,该数据会重发一次,保证数据的完整.
不会一直不停的发下去,有时间最大允许周期.
TCP的四次挥手:
客户端向服务端发送一个请求消息,断开连接(代表客户端没有数据传输了)
服务端接受请求 , 发出响应
等到服务端所有数据收发完毕之后
服务端向客户端发送断开连接的请求
客户端接受请求 , 发出响应
等到2msl,最大报文生存时间之后
客户端与服务端彻底断开连接
MSL为最大报文段生存时间
默认规定MSL为2分钟,但实际应用中常用的是30秒,1分钟和2分钟等。
TCP的四次挥手
(14) UDP(User Datagram Protocol)一种无连接的,不可靠的传输层通信协议(比如:发短信)
优点:速度快,可以多人同时聊天,耗费资源少,不需要建立连接
缺点:不稳定,不能保证每次数据都能接收到
应用:IP电话,实时视频会议,聊天软件,少量数据传输的场景