OSI、TCP/IP模型及网络相关基础知识

一、基本概念

1、网络

  将不同区域的电脑连接在一起,组成局域网、城域网、广域网,把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大、功能强的网络系统,从而使众多的计算机可以方便的互相传递信息,共享硬件、软件、数据信息等资源。
功能:

  • 资源共享;
  • 信息传输与集中处理;
  • 负载均衡与分布处理;

2、通讯协议

  计算机网络中实现通信必须有一些约定,即通信协议,对速率、传输代码、代码结构、传输控制步骤、差错控制等制定标准;

3、通信接口
为了使两个结点之间能够进行对话,必须在它们之间建立通讯工具(接口),使彼此之间能进行信息交换,接口包括两部分:

  • 硬件装置:实现结点之间的信息传送
  • 软件装置:规定双方进行通信的约定协议

4、网络分层

  由于结点之间练习很复杂,在制定协议时,把复杂成分分解成一些简单的部分,再将它们复合起来,最常用的复合方式是层次方式,即同层之间可以通信、上一层可以调用下一层,而与再下一层不发生关系

5、计算机网络:是通过传输介质、通信设施和通信协议,将分散在不同点的计算机设备互连起来,实现资源共享和数据传输的系统;

6、网络编程:就是彼岸写程序使联网的两个或多个设备进行传输;

二、OSI网络通信协议模型

  国际标准组织提出网络开放互联模型OSI(Open System InterConnection),将网络划分为7层,OSI是一个参考模型,而TCP/IP协议是事实上的标准;

OSI、TCP/IP模型及网络相关基础知识_第1张图片

简单来说,每一层的功能如下:

应用层 直接向用户提供服务,完成用户希望在网络上完成的各种工作
表示层 对应用层的数据进行封装、校验、加密等操作
会话层 对通信的开始、结束、异常、中断进行处理
传输层 保持通信双方端对端的联系(端口)
网络层 查找通信双方主机与主机的联系(IP)
数据链路层 在于保证网络中相邻节点的可靠性通信、物理地址(MAC地址)(arp,rarp)
物理层 数据在介质中以比特流的形式在通信介质上传输
三、TCP/IP协议

  OSI是一个参考模型,而TCP/IP协议是事实上的标准,TCP/IP协议是一个协议簇,参考了OSI模型,但是并没有严格按照OSI规定的七层标准去划分,而是只划分了四层:应用层,传输层,互连网络层,网络接口层(物理+数据链路层)这样更简单一点,当划分层次太多时,很难区分某个协议是属于哪个层的;
OSI、TCP/IP模型及网络相关基础知识_第2张图片
TCP/IP模型的简单介绍:

1. 应用层:
负责处理特定的应用程序细节,几乎各种不同的TCP/IP都会提供这些通用的应用程序:

  • 应用于各种应用程序、APP
  • 协议:
    • FTP(File Transfer Protocol)文件传输协议<端口:21> 减少或消除不同操作系统下处理文件的不兼容性;
    • HTTP(HyperText Transfer Protocal)超文本传输协议<端口:80>
    • SMTP(Simple Mail Transfer Protocol)简单邮件协议<端口:25>

2. 传输层:

  主要为两台主机上的应用程序提供端到端的通信,TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端,任何必须的可靠性必须由应用层来提供。

  • 数据单元:数据段
  • 协议
    • TCP(Transmission Contrl Protocol):传输控制协议,提供可靠的连接服务,进行数据传输之前需要建立连接(三次握手),建立连接之后才能通信,通信结束断开连接(四次挥手);
    • UDP(User Datagram Protocol):用户数据报协议、发送数据前不需要建立连接;

3. 网络层:

  有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。

  • 应用:路由器、交换机
  • 数据单元:数据包
  • 协议
    • IP(IPV4/IPV6)(Internet Protocol)网络互联协议;

    • ARP(Address Resolution Protocol)地址解析协议,实现通过IP地址得到物理地址;

    • RARP(Reverse Address Resolution Protocol)逆地址解析协议,实现通过物理地址得到IP地址;

    • ICMP(Internet Control Message Protocol)网络控制报文协议,是TCP/IP协议族的一个子协议,用于在ip主机,路由器之间传递控制消息;

(数据链路层 数据单元:帧)

4. 网络接口层:
有时也称作数据链路层或链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与传输媒介的物理接口细节;

  • 应用:网线
  • 数据单元:比特

假设在一个局域网中有两台主机,两者都运行FTP协议,那么这个过程中会涉及到的协议如下:
OSI、TCP/IP模型及网络相关基础知识_第3张图片

下图是TCP/IP模型与OSI参考模型的比较以及各层的部分协议:
OSI、TCP/IP模型及网络相关基础知识_第4张图片

四、互联网的地址 – IP(定位结点)

  互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。用来标识网络中的一个通信实体的地址,通信实体可以是计算机、路由器等。比如互联网的每个服务器都要有自己的IP地址,而每个局域网的计算机要通信也要配置IP地址,路由器是连接两个或多个网络的网络设备;

1)IP地址分类:

  • IPV4:32位地址;
      表示形式:
    • 点分十进制:例如本机IP为127.0.0.1,最大表示255.255.255.255
    • 二进制:00000000 00000000 00000000 00000000
      高n位连续的为网络标识,剩下的地位表示主机位
  • IPV6:128位(16字节)写成8个16位的无符号整数,每个整数用4个16禁止位表示,数之间用(:)来隔开;

32位的IP地址,Internet地址并不采用平面形式的地址空间,如 1、2、3等。IP地址具有一定的结构,五类不同的互联网地址格式如图:
OSI、TCP/IP模型及网络相关基础知识_第5张图片

而区分各类地址最简单的方法就是看它第一个十进制整数:

类型 范围
A 0.0.0.0 ~ 127.255.255.255
B 128.0.0.0 ~ 191.255.255.255
C 192.0.0.0 ~ 223.255.255.255
D 224.0.0.0 ~ 239.255.255.255
E 240.0.0.0 ~ 247.255.255.255

2)特殊的IP:
- 本机地址127.0.0.1;
- 192.168.0.0 ----- 192.168.255.255是私有地址,属于非注册地址,专门为组织机构内部使用;

五、数据封装和数据拆封

1. 数据封装 Data Encapsulation

  当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如下图;

  • TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment);
  • IP传给网络接口层的数据单元称作IP数据报(IP datagram);
  • 通过以太网传输的比特流称作帧(Frame )。

OSI、TCP/IP模型及网络相关基础知识_第6张图片
  图中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度,以太网数据帧的物理特性是其长度必须在 46~1500字节之间。

UDP数据与TCP数据基本一致。唯一的不同是 UDP传给IP的信息单元称作 UDP数据报(UDP datagram),而且UDP的首部长为8字节。

许多应用程序都可以使用 TCP或UDP来传送数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。 TCP和UDP都用一个16 bit的端口号来表示不同的应用程序。
TCP和UDP把源端口号和目的端口号分别存入报文首部中。

2. 数据拆封 Data Dismantling

  是指将接收到的数据进行拆包,每一层只把对该层有意义的数据拿走,或者说每一层只能处理发送方同等层的数据,然后把其余的部分传递给上一层,这就是对等层通信的概念。
接收方数据处理的方式是从底层到高层,逐层进行数据解封装。

六、端口号(区分应用程序)

  IP地址用来标识一台计算机,但是一台计算机上可能提供多种网络应用程序,端口是虚拟的概念,并不是说在主机上真的有若干个端口,通过端口,可以在一个主机上运行多个网络应用程序,端口的表示是一个16进制的二进制整数,2个字节,对应十进制的0-65535,TCP和UDP也采用16bit的端口号来识别应用和程序;

  • 分类:

    • 公认端口 0-1023 例如80端口分配给www,21端口分配给FTP,8080 TomCat服务器
    • 注册端口 1024-49151 分配给用户进程或应用程序
    • 动态/私有端口 49152-65535
  • 相关命令:

    • 查看所有端口:netstat -ano;
      OSI、TCP/IP模型及网络相关基础知识_第7张图片
    • 查看指定端口:netstat -ano|findstr “端口号”;
      OSI、TCP/IP模型及网络相关基础知识_第8张图片
    • 查看指定进程:tasklist|findstr “端口号”;
      OSI、TCP/IP模型及网络相关基础知识_第9张图片
    • 查看具体程序:使用任务管理器查看PID;

  客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。

七、Socket套接字

socket(IP+端口号)
OSI、TCP/IP模型及网络相关基础知识_第10张图片
  TCP和UDP都属于传输层协议,在应用层和传输层之间,则是使用套接字来进行分离,套接字就像是传输层开的一个小口,应用程序通过这个小口向远程发送数据,或者接收远程发来的数据,而这个小口内,也就是数据进入之后,或者数据出来之前,是不知道也不需要知道的,也不关心它如何传输,这属于网络其他层次的工作;

八、网络协议TCP/UDP

1、TCP

https://mp.csdn.net/mdeditor/90704793#

2、UDP
https://blog.csdn.net/Daria_/article/details/90720084

你可能感兴趣的:(网络编程)