网络编程基础知识

简介: 网络编程基础知识

一、概念了解

IP地址:用于定位主机的网络地址,IP地址由4个字节组成,常用点分十进制来进行表示,每个字节用十进制数表示,四个字节之间用.分隔,例如:126.2.34.9。

特殊的IP地址:127.*(第一个字节为127的IP地址),主要用于本机回环测试,即本机到本机之间网络通信测试。

端口号:用于定位主机中的进程。

注意:

  • 一个进程启动之后,系统会随机分配一个端口号。
  • 多个进程不能同时绑定同一个端口号,但是一个进程可以有多个端口号。
  • 端口号的取值范围是:0~65535。

网络协议: 网络通信经过所有的网络设备都必须遵守的约定,简单来说就是收发双方定义的通信规则,只有彼此遵守这个约定,通信才能进行,网络协议三要素:语法、语义、时序。

网络协议也需要分配端口号,其中0~1023的端口号是预留给应用层协议的。

五元组:在TCP/IP协议中,用于标识一个网络通信。

五元组的组成要素:

  • 源IP地址:用于标识源主机(发送方)的网络地址。
  • 源端口号:用于标识主机中本次通信发送数据的进程。
  • 目的IP地址:用于标识目的主机(接收方)的网络地址。
  • 目的端口号:用于标识主机中本次通信接收数据的进程。
  • 协议号:标识发送方和接收方进程所约定的数据格式。

二、协议分层

1、OSI七层模型

OSI七层模型将网络从逻辑常分为了七层(由高到低如下所示):

  • 应用层:针对特定应用的协议。
  • 表示层:设备固有的数据格式和网络标准数据格式转换。
  • 会话层:进行通信管理。
  • 传输层:管理两个结点之间的数据传输,负责的是可靠传输。
  • 网络层:地址管理与路由选择。
  • 数据链路层:互联设备之间传送和识别数据帧。
  • 物理层:比特流与电子信号的切换,与硬件密切相关。

OSI七层模型概念清楚,理论也比较完善,但是十分复杂也不使用,所以OSI七层模型最终也没有实现。

2、TCP/IP五层协议

TCP/IP协议采用五层网络模型,将OSI七层模型的高三层合并为了应用层。

五层网络模型从下到上依次是:

  • 物理层:网络通信中的硬件设备,例如:网线、网卡,还有对于硬件设备的约定都是物理层协议锁负责的范畴用来保证主机和网络设备之间都是相互匹配的。
  • 数据链路层:用于完成相邻的两个设备之间的通信,是局部的
  • 网络层:负责点到点之间的通信,网络之间的两个任意结点之间都可以实现通信,是全局范围的,并且网络层会为通信的的两个结点之间规划出一最合适的路线。
  • 传输层:是端到端之间的通信,只关注起点到终点的数据是否发送成功,不关注发送的具体细节。
  • 应用层:与应用程序是密切相关的,关注的是所传输的数据的用途。

那么如果发送一条协议报文,数据在各层之间传输的形式是怎样的(假设是TCP报文)?

封装过程:发送方发送数据

分用过程:接收方接收数据

从物理层开始接收数据,到物理层又逐一封装起来,相当于是封装的逆过程。

上述是整体的一个情况,但是发送方和接收方之间还会存在多个交换机和路由器。

交换机:

路由器:

目录
相关文章
|
6月前
|
消息中间件 网络协议 C++
C/C++网络编程基础知识超详细讲解第三部分(系统性学习day13)
C/C++网络编程基础知识超详细讲解第三部分(系统性学习day13)
|
网络协议 安全 Java
Java网络编程基础知识详解
网络编程是现代软件开发中不可或缺的一部分,它使我们能够在不同的计算机之间实现数据传输和通信。Java作为一种强大的编程语言,提供了丰富的网络编程库,使开发者能够轻松地创建网络应用程序。本文将介绍Java网络编程的基础知识,面向初学者,详细讨论网络通信的概念、Socket编程、服务器和客户端编程等内容。
209 0
|
监控 Java Linux
由浅入深Netty基础知识NIO网络编程1
由浅入深Netty基础知识NIO网络编程
64 0
|
6月前
|
监控 Java 数据库连接
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
54 3
|
6月前
|
网络协议 Linux 网络架构
|
6月前
|
网络协议 C++
C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)
C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)
|
存储 Java Docker
由浅入深Netty基础知识NIO网络编程 2
由浅入深Netty基础知识NIO网络编程
67 0
|
6月前
|
存储 网络协议 安全
C/C++网络编程基础知识超详细讲解第一部分(系统性学习day11)
C/C++网络编程基础知识超详细讲解第一部分(系统性学习day11)
|
6月前
|
网络协议 Linux 数据处理
Linux网络编程(各种协议模型的基础知识)
Linux网络编程(各种协议模型的基础知识)
76 0
|
网络协议 Java API
【网络原理】网络编程Socket套接字基础知识汇总
【网络原理】网络编程Socket套接字基础知识汇总
104 0