网络通信基础

文章目录

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. 协议类型:标识发送数据的进程和接收数据的进程,双方之间约定的数据格式
相关推荐
java—大象3 分钟前
基于JavaWeb开发的java+Springboot操作系统教学交流平台详细设计实现
java·开发语言·spring boot
qq_4165602015 分钟前
fmql之ubuntu添加dhcp服务
网络
DreamByte28 分钟前
Python Tkinter小程序
开发语言·python·小程序
覆水难收呀36 分钟前
三、(JS)JS中常见的表单事件
开发语言·前端·javascript
阿华的代码王国40 分钟前
【JavaEE】多线程编程引入——认识Thread类
java·开发语言·数据结构·mysql·java-ee
繁依Fanyi1 小时前
828 华为云征文|华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
运维·服务器·开发语言·人工智能·pytorch·华为·华为云
小狮子安度因1 小时前
边缘智能-大模型架构初探
linux·网络
weixin_486681141 小时前
C++系列-STL容器中统计算法count, count_if
开发语言·c++·算法
基德爆肝c语言1 小时前
C++入门
开发语言·c++
怀九日1 小时前
C++(学习)2024.9.18
开发语言·c++·学习·面向对象·引用·