网络基础
网络相关的知识
一. 端口
端口是为了将同一个电脑上的不同程序进行隔离.
通过IP可以找到电脑
通过端口可以找到电脑上的程序
示例:
MySQL是一个软件,软件帮助我们在硬盘上进行文件操作.默认端口:3306
Redis是一个软件.软件帮助我们在内存里进行数据操作.默认端口:6379
网站默认端口:80 , 访问时: http://www.luffycity.com:80
网站默认端口:443 , 访问时:https://www.luffycity.com:443
范围:
1--65536 1--1024 一般不用
一般情况下: 8000 8001 ....
二.OSI 7层模型
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
每层运行常见物理设备:
七层模型
应用层:使用软件 打开软件或网站
由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式
功能:规定应用程序的数据格式。
表示层: 看到数据,如图片和视频 生产数据:szwwd
会话层: 保持登录或链接状态 应用偷偷携带一点其他数据:令牌 19rRNAwf8GVe6xyT9kJPIu5SlQc
传输层: TCP/UDP [TCP][szwwd|19rRNAwf8GVe6xyT9kJPIu5SlQc]
1. 由来:我们通过ip地址和mac地址找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口。端口即应用程序与网卡关联的编号。
2. 功能:建立端口到端口的通信。
3.TCP:通过双向链接,客户端向服务端发送消息后,等待服务端回复消息后才算发送成功。
缺点:速度慢
优点:可靠(可靠在对方要回应一个包确保发送成功)
4.UDP: 没有链接,直接发送。
缺点:不可靠
优点:速度快
网络层: ip 【IP】【[TCP][szwwd|19rRNAwf8GVe6xyT9kJPIu5SlQc]】
1.由来:有了ethernet,mac地址,广播的发送方式,计算机与计算机之间就可以通信了,问题是世界范围的互联网由一个个彼此隔离的小的局域网组成的,那么发送一条消息全世界都能收到,这样会导致效率很低了。所以,必须找到一种方法来区分计算机是在局域网还是不在局域网里。如果在同一个局域网里,就采用广播的方式发送,如果不是,就采用路由的方式。
2.功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址。
3. IP地址:规定网络地址的协议叫ip地址,广泛采用V4版本即ipv4,它规定网络地址由32位二进制表示
范围:0.0.0.0-255.255.255.255
一个ip地址通常写成四段十进制数,例:172.16.10.1
4.子网掩码:所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。
5.arp协议:就是讲IP地址解析成mac地址。
数据链路层:MAC [MAC][【IP】【[TCP][szwwd|19rRNAwf8GVe6xyT9kJPIu5SlQc]】]
1.由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位
2.功能:定义了电信号的分组方式
3.以太网协议ethernet:早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet
4.以太网协议ethernet规定:
1.一组电信号构成一个数据包,叫做“帧”
2.每一数据帧分成:报头head和数据data两部分
head包含:发送者/源地址,6个字节
接受者/目标地址,6个字节
数据类型:6个字节
data包含:数据包的具体内容(最短64字节,最长1500字节)
5.mac地址:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址。
6.广播:有了mac地址,同一网络内的两台机器就可以通信了(一台主机通过arpmac协议获取另外一台主机的mac地址)
物理层:将数据转换成电信号发送
由来:计算机和计算机之间要想通信,就必须接入internet,言外之意就是计算机之间必须完成组网。
功能:主要基于电器特性发送高低电压,高电压对应数字1,低电压对应数字0(提供电信号)
三 .TCP三次握手/四次挥手
socket客户端向服务端发起连接请求: 三次握手
三次握手的目的:建立双向通信链路。SYN代表客户端向服务端发送的一个请求,ACK代表服务端向客户端发送的回应。
client.connect((....))
客户端 服务端
client.send("发送数据") 收发数据
收发数据
客户端和服务端断开连接: 四次挥手
client.close() 或 conn.close()
断开连接时, 反应到代码上: 抛出异常/发送空内容.