Linux 网络基础(1)基础知识、IP地址、端口、协议、网络字节序

这篇具有很好参考价值的文章主要介绍了Linux 网络基础(1)基础知识、IP地址、端口、协议、网络字节序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础知识

网络发展背景:

网络的划分:局域网(覆盖范围在1000m以内)、城域网(覆盖范围在20km以内)、广域网(更大范围)

组网方式:以太网、令牌环网....

日常名词:互联网,因特网----说的是一个网络,就是国际化的广域网

网卡:实现数字信号与电信号之间的转换

中继器:信号放大,端口只有两个

集线器:端口更多的中继器(广播)

交换机:端口更多,并且支持广播,组播,单播

路由器:对数据路径进行选择

网络就是由大量的路由器互相连接,组成的一个复杂的星型网络

Linux 网络基础(1)基础知识、IP地址、端口、协议、网络字节序

小明在大阪,小红在洛杉矶,小明给小红发送一条信息,怎么确保发给的是小红呢?不是给别人

1.IP地址

IP地址:网络中每一台主机的唯一标识

并且网络传输的数据中,必然都会包含两个要素:源端IP地址,目的端IP地址,这两个信息标识的起点与终点,知道了数据从哪儿来到哪儿去。

网络中的路由器,就会辨别这个目标主机IP地址属于哪个网络,然后规划路径将数据发送到对应网络。

目标地址:明确目标网络,进行网络中的路径规划

源端地址:让对方知道数据来源,便于进行回复的时候知道回复哪里

IP地址本质: uint32_t类型的数据---无符号32位的整形数字

IPV4------uint32_t类型,最大数字2^32-1,大概为42亿9千万,也就是说IP地址在实际使用中不够用。

IPV6------uint8_t ip[16]-----128位的数据。相当于2^32 * 2^32 * 2^32 * 2^32,永远用不完的数据。

但是IPV6并不向前兼容ipv4,也就是如果直接使用ipv6标准的通信,以前基于ipv4的设备,程序用不了,因此推广很慢,当前主要的网络通信还是基于IPV4的通信。

DHCP技术----动态地址分配技术(谁上网分配给谁)

NAT技术:网络地址转换技术--应用于私网的组建(私网中大量主机可以使用同一个公网地址进行上网)

通过IP地址可以实现网络中指定的两台主机之间的通信;

小明给小红发的是QQ消息,为什么这个QQ消息就一定是Q这个程序处理的,而不是主机上的xshell处理,因此网络中传输的数据,比必须在一条主机上标识应该由那个进程来处理。

2.端口

端口:在一台主机上用于唯一标识一个网络通信进程的

本质: uint16_t-- 无符号16位的整数

因此网络传输的数据,不但有源端IP,对端IP,还需要:源端端口,对端端口

这两个信息描述了,两台主机上的那两个进程之间的通信(理解:网络通信其实也是一种进程间通信)

一个端口只能属于一个网络的通信进程,但是一个网络通信进程可以使用多个端口;

一个网络通信进程来了之后,会告诉系统和网卡收到的数据中,那个数据应该交给自己来处理(告诉系统自己用了那些端口)

为什么为了标识一个网络通信进程,要单独列出来一个端口概念,而不使用进行PID

原因:进程ID在程序重启后就会改变

Linux 网络基础(1)基础知识、IP地址、端口、协议、网络字节序

实际网络通信中,必然有一端主机的地址和端口是固定的,让所有人都知道的。

这一端通常叫做服务端(为用户提供服务的一端)

网络应用提供商,都会搭建自己的服务器端,向外发布客户端程序中都封装了自己的服务器地址信息在里面

Linux 网络基础(1)基础知识、IP地址、端口、协议、网络字节序

3.协议

明确了自己的IP地址,端口和对端的IP地址和端口,这时候就可以实现两个主机上指定进程之间的通信小明给小红发送了一条: 我想你了

对应的二进制 010111110001111xxxx转换为电信号的高低电平进行传输

但是如果小明和小红的主机上的网卡是不同厂商生产的,他们对于高低电平的波长解释不同,就会导致 010101111,实际对方收到的是101011111.

可能就被翻译成为:吃了吗

小红回复了: 还没呢

小明收到了: 收到的数据被解释成为--滚蛋

这时候的小明和小红,并没有形成实质上的通信

协议:网络协议就是网络通信中的数据格式约定,不同的主机必须遵循相同的网络通信协栈(一组协议)才可以实现实质通信

小明和小红进行通话: 上层必须都使用中文,下层必须都使用手机 (2G/3G/4G/5G--网络频段)

这里的中文,以及手机频段都是一种协议; 因此网络通信使用的不是单个协议,而是一组协议

国际标准化组织这时候就订立各种协议标准,大家想要通信都必须使用相同的这条标准协议进行。并且对协议进行了分层:

协议分层: 按照网络通信环境,不同层次所提供的服务,使用的协议,提供的接口对整个通信环境进行了分层

OSI七层网络互联模型: 应用层,表示层,会话层,传输层,网络层,链路层,物理层但是因为OSI七层模型划分的过于细致,导致实现起来过于复杂

因此其他组织在这个基础上提出了TCP/IP五层模型:

应用层:负责应用程序之间的数据沟通的格式约定(QQ与QQ的沟通协议,SSH); 典型协议: HTTP,SSH,SMTP,FTP,...

传输层:负责进程之间的数据传输的格式约定; 典型协议: TCP/UDP (内部就描述了源端端口,对端端口)

网络层:负责地址管理与路由选择; 典型协议: IP协议 (内部描述了源端IP,对端IP); 典型设备: 路由器

链路层:负责相邻设备之间的数据传输; 典型协议: ETH协议--以太网协议(内部描述了相邻设别的MAC地址), 典型设备: 交换机

物理层: 负责物理光电信号的传输; 典型协议: 以太网协议 (与组网技术有关)

Linux 网络基础(1)基础知识、IP地址、端口、协议、网络字节序

其中,应用层可以自己修改,红框内的层不能修改,只能选择操作系统提供给你的协议。

从数据到物理层发送,层层的过程叫封装

从物理层到解析数据,层层过程叫分用

MAC地址

Linux 网络基础(1)基础知识、IP地址、端口、协议、网络字节序

4.网络字节序

字节序: cpu对内存中数据以字节为单位进行存取的顺序

分类:内存地址有高低地址之分, 数据二进制有高低位之分,,数据在内存进行存储,从低地址开始存储,到底先存高位还是低位

int a = 0x01020304

大端字节序: 低地址存高位 01 02 03 04

小端字节序: 低地址存低位 04 03 02 01

字节序所针对的数据类型: 存储单元大于1字节的数据类型--shot,int,long,flat,double(单字节存储的数据是不存在字节序问题的,比如char

主机字节序不同对于网络通信的影响:

如果网络通信的两台主机,主机字节序相同,则可以不用考虑字节序问题但是如果不同,就有可能会造成数据二义;

数据的传输一定是发送了什么数据,对方就接收什么数据

大端主机: inta = 0x01020304; 01020304 -> 01020304 小端主机解释: 004030201

解决方案: 网络传输的数据,使用统一的字节序标准 --- 网络字节序(采用的是大端字节序)

不需要关心对方主机的字节序了,因为对方发送到网络中的数据都是网络字节序的,你只需要根据自己的主机字节序进行转换即可

因此注意:如果编写网络程序要考虑跨平台问题,存储单元大于1字节的数据类型对应的数据,就要使用网络字节序进行通信文章来源地址https://www.toymoban.com/news/detail-447738.html

到了这里,关于Linux 网络基础(1)基础知识、IP地址、端口、协议、网络字节序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络之TCP/IP协议第一篇:网络基础知识

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(66)
  • 详解TCP/IP协议第一篇:网络基础知识

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(57)
  • Linux网络编程 网络基础知识

    目录 1.网络的历史和协议的分成 2.网络互联促成了TCP/IP协议的产生 3.网络的体系结构 4.TCP/IP协议族体系 5.网络各层的协议解释 6.网络的封包和拆包 7.网络预备知识      Internet-\\\"冷战\\\"的产物 1957年十月和十一月,前苏联先后欧两颗”Spuinik”卫星上天 1958年美国总统艾森豪威尔向

    2024年02月10日
    浏览(48)
  • Linux知识点 -- 网络基础(一)

    独立模式:计算机之间相互独立 网络互联:多台计算机连接在一起,完成数据共享 局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起: 广域网WAN:将远隔千里的计算机都连接在一起 注:局域网和广域网只有规模上的差别; OSI (Open System Interconnection,开放系统互

    2024年02月11日
    浏览(53)
  • IPV6网络协议基础知识 IPV6地址和IPV6报文格式详细介绍

    由于互联网的快速发展与普及,原有的IPV4地址已不能满足网络用户的需求,虽然NAT可以缓解IPV4地址的耗尽,但NAT破坏了网络环境的开放、透明以及端到端的特性,因此IPV6地址协议应运而生。IPV6协议使用128位地址替代32位的IPV4地址,这样大约可以产生340万亿亿亿亿(3.4*1038)个

    2024年02月08日
    浏览(68)
  • 【Linux系统基础快速入门详解】SSH远程连接必备网络基础知识详解

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) SSH(Secure Shell)是一种网络协议,用于通过加密的方式在不安全的网络上安全地进行远程连接和数据传输。下面是对SSH远程连接的必备

    2024年02月07日
    浏览(67)
  • Python网络编程(一)——了解IP和端口的基础知识以及socket的简单实现

    Python网络编程(一)——了解IP和端口的基础知识以及socket的简单实现 IP(Internet Protocol) 地址是唯一标识互联网上连接至计算机或其他设备的地址。每一个设备在 IP 网络中拥有一个不同的 IP 地址,它由 32 位二进制数组成,通常表示为四个从 0 到 255 的十进制数之间用 (.)

    2024年02月04日
    浏览(64)
  • Linux MQTT智能家居项目(网络基础知识)

    本篇文章带大家来做一个LinuxMQTT智能家居项目,这个项目将会讲解到网络的基础知识和MQTT协议一些相关的知识。 IP(Internet Protocol): IP是一种网络层协议,它负责在互联网中标识和定位设备。每个连接到互联网的设备,如计算机、服务器、路由器等都拥有一个唯一的IP地址

    2024年02月14日
    浏览(44)
  • 《3.linux应用编程和网络编程-第8部分-3.8.网络基础》 3.8.1.网络通信概述 3.8.3.网络通信基础知识2

        进程间通信: 管道 、 信号量、 共享内存, 技术多,操作麻烦     线程就是解决 进程间 通信 麻烦的事情,这是线程的 优势 3.8.1.网络通信概述 3.8.1.1、从进程间通信说起: 网络域套接字socket , 网络通信其实就是位于网络中不同主机上面                   的 

    2024年02月15日
    浏览(56)
  • 网络基础知识1—网络

    (1)组网的方式: 网络直连、集线器连接多台主机、交换机连接多台主机、路由器连接多台主机 (其中可以再使用集线器和交换机来连接主机) (2)组网后,局域网内的主机就可以相互访问了,但是还不能访问局域网外的主机 (1) 广域网是多个局域网组建的大型网络 (

    2024年02月03日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包