网络基础1

Posted 李憨憨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络基础1相关的知识,希望对你有一定的参考价值。

网络编程阶段: 网络基础1, 套接字编程, 网络基础2, 网络基础3, 高级IO
 网络基础1: 网络编程前情提要
 套接字编程: 网络通信程序的编写
 网络基础2, 网络基础3: 网络通信原理流程- -协议解析
 高级IO: 高并发模式

网络基础1:

发展背景:

交换机无法实现路径选择的功能;
所以交换机就换成了路由器;
在这里插入图片描述

互联网, 因特网, 以太网, 令牌环网,
局域网, 城域网, 广域网: 根据网络覆盖范围进行的网络划分

网络覆盖范围
局域网<1000
城域网1000~20000
广域网>20000

互联网, 因特网: 相同的东西不同的叫法- -国际性的更大的广域网
以太网,令牌环网: 比较典型的组网方式

IP地址

IP地址: 一台主机在网络中的标识
IPv4:
 uint32_t 类型的整数- - IP地址数据类型
DHCP- -动态地址分配
NAT- -网络地址转换
IPv6: 不向前兼容IPv6
每一个网络中的数据都会带有两条信息: 源端IP地址, 对端IP地址

端口

端口: 网络通信中一台主机上进程的标识符
 uin16_t类型的数据- - 范围: 0~65535

为什么不用进程id来表示呢进程?
因为进程id是会变的, 所以要用单独一个数字来标识一个进程;

每一个网络中的数据不但带有源端IP和对端IP, 还包括两个信息, 源端端口, 对端端口
源端IP+远端端口+对端IP+对端端口: 描述了当前这个数据是从网络中的哪个主机上的哪个进程发出来的, 要发往哪台主机上的哪个进程

协议

协议 - 约定
网络通信协议—说白了就是网络通信中的数据格式约定;
因此要实现网络互连—就必须具有统一的网络通信协议标准;
ISO(国际标准化组织):
 OSI七层网络互连模型: 以提供的服务不同将网络通信环境划分为七层
  层次划分: 应用层–表示层–会话层–传输层–网络层–链路层–物理层
 TCP/IP五层模型:
  应用层: 负责应用程序之间的数据沟通; FTP(两个文件之间数据传输的协议), HTTP(超文本传输协议)
  传输层: 负责进程之间的数据传输; UDP/TCP
  网络层: 负责地址管理和路由选择; 负责IP地址的管理以及根据IP地址, 为数据选择一条合适的路径, 到达对端主机; IP, 路由器
  链路层: 负责相邻设备之间的数据传输; 以太网协议-eth;交换机;
  物理层: 负责物理光电信号的传输;以太网协议;集线器;
数据传输的过程:
在这里插入图片描述

比如, 我现在要发送一条qq消息, 它原始从键盘获取到的是一个hello, qq在应用程序层面(应用层)进行一个加密, 在前面加上一个qq的协议(比如它在里面需要描述这是哪个qq号发送出来的数据, 它要发送到哪一个qq号上面去)qq把数据组织完毕了之后, 它就会通过系统调用接口来将这个数据再交给操作系统.( 数据的发送肯定要通过网卡来发送, 通过计算机的硬件来发送, 硬件的操作用户程序无法完成只能通过系统调用, 经过操作系统最终通过驱动操作我们的硬件.)
所以, qq将数据组织完毕交给操作系统, 并且告诉操作系统, 这个数据时我要发给谁的. 这时候操作系统拿到数据之后, 就进行了传输层的封装(用的是传输层的udp协议)在这一层里面udp就要描述这个数据是从哪一个进程发送出来的, 要到哪一个进程去, 这样回复的时候, 对方才能知道回复给哪一个进程.
等到udp在传输层描述完毕了之后, 再把数据进行描述就到了网络层, 网络层在原来的基础之上再去进行描述, 增加源端的IP地址和对端的IP地址. 因为它在这一层就要描述数据从哪个主机来要到哪个主机去.
网络层完毕之后, 这条数据就要接近发送了, 但是发送之前还要进入链路层, 以太网协议,也是链路层比较典型的一个协议, 以太网协议就要描述我的物理设备IP地址是多少, 描述了到底是哪两个相邻的设备在进行数据传输.
然后进入物理层, 物理层通过光电信号(高低电平)最终到达对端主机, 然后经过宽带或者光纤到达对端主机之后, 对端的网卡收到这些光电信号, 将其转换成为我们的数字信号, 得到这些数据之后, 它会根据帧头和帧尾, 在链路层会进行解析, 取出原始数据, 网络层这时候再根据IP协议, 掐头去掉一个IP协议, 得到了传输层给过来的数据, 传输层再根据udp协议进行解析, 取出后边的数据, 这就是原始应用层qq程序本身交给操作系统的数据. qq程序拿到数据之后进行解密, 这时qq就拿到了原始的hello这条程序.

网络字节序

主机字节序: 一台主机上CPU对内存中数据按照字节为单位进行存取的顺序
 分类: 大端:底地址存高位; 小端: 底地址存底位;
 一个变量/数组的起始地址就是低地址, 地址随着下标变大而变大;
在这里插入图片描述
主机字节序主要强调的是存储单元大于一个字节的数据类型
主机字节序对网络通信的影响:
 两个不同主机字节序主机之间的数据通信
在这里插入图片描述
主机字节序不同, 则有可能在网络通信中会产生数据二义
想要避免因为主机字节序不同而导致的数据二义, 则需要在网络中统一字节序标准----网络字节序—大端字节序(也就意味着如果你的主机是小端, 则在网络通信时需要将数据转换为网络字节序后进行发送)

以上是关于网络基础1的主要内容,如果未能解决你的问题,请参考以下文章

javaAPI_网络编程基础_网络编程基础1

网络基础——网络大致框架

网络基础1

网络规划设计师教程的图书目录

计算机网络基础-1-概述

计算机网络基础-1-概述