网络通信基础

文章目录

IP地址

概念

IP地址主要用于定位主机或者其他网络设备在网络上的具体位置;

就像我们在买快递时,都会填写一个地址,快递员就会把快递送到指定的地址处

IP地址格式

在网络上,IP地址是一个32位的二进制数标识,然后按照每8位二进制数分成一组,共分成四组,中间用 点 相连,但是,这样的32个数字太长了,不容易记忆,所以,就用"点分十进制"的方式标识,即 q.w.e.r 这样的格式,其中的 q w e r 都是 0~255 之间的数字;

例如:192.168.1.1

特殊IP地址:127.0.0.1,这个IP地址是一个本机环回IP,即本机与本机之间的网络通信,通常用于测试我们写的网络通信代码是否符合业务;

端口号

概念

区分一个主机上的不同的进程(程序)

例如:QQ音乐,我们想要听歌时,QQ音乐就需要通过网络加载出来歌曲数据,所以QQ音乐就需要联网,同时呢,当通过网络将歌曲数据传过来时,具体是交给了那个程序呢?所以就需要用一个端口号来标识,通过端口号确定是哪个程序的数据
例如,在送快递时,不仅要指定收货地址,还要指定收货人,这样才能将快递成功交给买家,所以在通信过程中,IP 和 端口号 往往是"一对"

格式

端口号使用两个字节范围内的数字表示,所以16二进制数的最大值就是65545,所以也就是0~65535范围的数字,

注意事项

一个端口号只能被一个进程绑定,但是一个进程可以绑定多个端口号

进程绑定一个端口号后,fork一个子进程,可以实现多个子进程也绑定这个端口号,但是,不同进程之间,不能绑定同一个端口号
1~1023 为知名端口号,这个范围的端口号,系统留作了特殊用途,咱们自己写的程序尽量不要占用,例如:

22端口 -> 预留给SSH服务器绑定SSH协议

21端口-> 预留给FTP服务器绑定FTP协议

23端口-> 预留给Telnet服务器绑定Telne协议

80端口-> 预留给HTTP服务器绑定HTTP协议

443端口-> 预留给HTTPS服务器绑定HTTPS协议
以上的知名端口号只是说通常都用于绑定了知名的协议,但是,它们也是可以使用1024 ~ 65535 之间的数字

这就好比坐飞机的头等舱和经济舱,头等仓的人也同样可以坐到经济仓,但是经济仓的人不能去坐头等舱

认识网络协议

为什么要有协议?

网络传输时,本质是通过光/电信号进行传输的,例如,低电平表示1,高电平表示0,或者高频光信号表示1,低频光信号表示0,由这样一组 0 或 1 组成的二进制数字进行网络通信,但是,网络通信时,传输的数据由很多种,有:图片,视频,文本等,不同类型的数据,格式也不同,在网络传输时,如何识别这是一个图片还是文本呢?所以就需要协议来规定数据的格式。

概念

网络协议,是在网络数据数据传输时,在经过所有网络设备时,都必须遵守的一组约定,如,通过哪种格式建立连接,按照哪种格式去识别传输过来的数据,只有遵守这组约定,计算机之间才能互相通信交流。

五元组

五元组由五个成分组成,是一次通信过程中不可缺少的信息

五元组的组成

  1. 源IP:标识源主机
  2. 源端口号:标识在源主机中,本次通信,发送数据的进程
  3. 目标IP:标识目标主机
  4. 目标端口号:标识在目标主机中,本次通信,接收数据的进程
  5. 协议类型:标识发送数据的进程和接收数据的进程,双方之间约定的数据格式
相关推荐
幼儿园老大*几秒前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue1 分钟前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man3 分钟前
【go从零单排】go语言中的指针
开发语言·后端·golang
萧鼎1 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸1 小时前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农1 小时前
Python 继承、多态、封装、抽象
开发语言·python
^velpro^1 小时前
数据库连接池的创建
java·开发语言·数据库
秋の花2 小时前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端2 小时前
第六章 7.0 LinkList
java·开发语言·网络
可峰科技2 小时前
斗破QT编程入门系列之二:认识Qt:编写一个HelloWorld程序(四星斗师)
开发语言·qt