网络介绍
定义:将具有独立功能的多台计算机通过通信线路和通信设备连接起来,在网络管理软件及网络通信协议下,实现资源共享和信息传递的虚拟平台。
学习网络的目的:
能够编写基于网络通信的软件或程序,通常来说就是网络编程。
IP地址的介绍
IP地址是分配给网络设备上网使用数字标签,它能够标识网络中唯一的一台设备,好比现实中每个人都有一个手机号。
注意:
- ip地址分为两类:IPv4 IPv6
- IPv4是目前使用的ip地址
- IPv6是未来使用的ip地址
IP地址的作用
通过IP地址找到网络中唯一一台设备,然后可以跟这个设备进行数据通信。
ifconfig和ping命令
命令名 | 说明 |
---|---|
ifconfig | 查看网卡信息 |
ping | 检查网络是否正常 |
-
172.16.47.199是在网络中的地址,使用ifconfig主要是查看网卡对应网络中的IP地址。
-
127.0.0.1表示本机地址,提示:如果和自己的电脑通信就可以使用该地址。
-
127.0.0.1该地址对应的域名是localhost,域名是ip地址的别名,通过域名能解析出一个对应的ip地址。
检查网络是否正常
-
ping www.baidu.com 检查是否能上公网
-
ping 当前局域网的ip地址 检查是否在同一个局域网内
-
ping 127.0.0.1 检查本地网卡是否正常
端口和端口号
如果在一台电脑上使用飞秋给另外一台电脑上的飞秋发送数据并且另外的这台电脑还运行着多个软件,它是如何区分这多个软件把数据给飞秋的呢?
其实,每运行一个程序都会有一个端口,想要给对应的程序发送数据,找到对应的端口即可
端口和端口号定义
端口:
是传输数据的通道,好比教室的门,是数据传输必经之路。
其实,每一个端口都会有一个对应的端口号,想要找到端口通过端口号即可
端口号:
操作系统为了统一管理这么多端口,就对端口进行了编号,这就是端口号,端口号其实就是一个数字,好比我们现实生活中的门牌号。
端口号有65536
个。
最终通信流程,通过ip地址找到对应的设备,通过端口号找到对应的端口,然后通过端口把数据给应用程序
端口号的分类
按照一定的规定可以分为:知名端口号和动态端口号
知名端口号
:
是指众所周知的端口号,范围从0到1023
,这些端口号一般固定分配给一些服务,比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务。
动态端口号
:
一般程序员开发应用程序使用端口号称为动态端口号。
动态端口号的范围是从1024到65535
,如果程序员开发的程序没有设置端口号,操作系统会在动态端口号这个范围内随机生成一个给开发的应用程序使用。
当运行一个程序默认会有一个端口号,当这个程序退出时,所占用的这个端口号就会被释放。
socket介绍
到目前为止我们学习了IP地址和端口号,使用这些我们就可以在茫茫的网络海洋中进行畅游了么?No!
只知道 IP地址,端口号,但是没有工具是无法到达诗和远方的。此时就需要使用socket来完成
socket定义
socket(简称 套接字) 是程序之间通信一个工具,好比现实中的电话,当知道了对方的电话号码后需要使用电话才能进行通讯,程序之间想要进行网络通信需要基于这个socket,socket就是程序间进行网络通讯的工具。
不夸张的说,只要跟网络相关的应用程序或者软件都使用到了socket。
TCP介绍
之前我们学习了IP地址和端口号,通过IP地址能够找到对应的设备,然后再通过端口号找到对应的端口,再通过端口把数据传输给应用程序,这里要注意,数据不能随便发送,在发送之前要选择网络传输方式(传输协议)
,保证程序之间按照指定的传输规则进行数据的通信。
TCP概念
TCP的英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议。
常用于对数据进行准确无误的传输,比如: 文件下载,浏览器上网
TCP通信步骤
- 创建连接
- 传输数据
- 关闭连接
TCP通信模型相当于生活中的“打电话”,在通信开始之前,一定要先建立好连接,才能发送数据,通信结束要关闭连接。
TCP的特点
-
面向连接
通信双方必须先建立好连接才能进行数据的传输,并且双方都会为此连接分配必要资源用来记录连接的状态和信息。当数据传输完成后,双方必须断开此连接,以释放系统资源。 -
可靠传输
TCP采用发送应答机制
通过TCP这种方式发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传送成功
超时重传
发送端发送一个报文之后就会启动定时器,如果指定时间内没有得到应答就会重新发送这个报文段
错误校验
TCP用一个校验和函数来校验数据是否有错误,在发送和接收时都要计算校验和
流量控制和阻塞管理
流量控制用来避免发送端发送过快而使得接收方来不及接收