一、网络通信

本文详细解析了网络通信中的CS与BS模式、OSI七层协议模型,重点阐述了TCP/IP协议,包括各个层的功能和特点,以及应用层常见的端口使用。
摘要由CSDN通过智能技术生成

一、网络通信

网络应用系统一般可分为两个部分:客户(Client)、服务器(Server);

网络服务程序架构有两种模式:CS模式、BS模式

1.1 CS模式

CS即Client/Server(客户机/服务器)结构。

优点:
交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。

缺点:

  1. 该结构的程序是针对性开发,变更不够灵活,维护和管理的难度较大。
  2. 缺少通用性,具有较大的局限性;即该程序的每台客户机都需要安装相应的客户端程序,分布功能弱且兼容性差,不能实现快速部署安装和配置。(譬如SecureCRT、迅雷、QQ)

1.2 BS模式

BS即Browser/Server(浏览器/服务器)结构;只需安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。

优点:
分布性强、维护方便、开发简单且共享性强、总体拥有成本低。

缺点:
数据安全性问题、对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,即难以实现传统模式下的特殊功能要求;例如通过浏览器进行大量的数据传输或进行报表应答、专用性打印输出都比较困难和不便;此外,实现复杂的应用构造有较大的困难。
(网站、学校教务系统)

1.3 OSI七层协议模型

OSI七层协议模型在这里插入图片描述
OSI(Open System Interconnection,开放系统互连)七层网络模型是ISO(International Organization for Standardization,国际标准化组织)提出的一个参考模型,是一个把网络通信在逻辑上的定义,也可以理解成为定义了通用的网络通信规范。

数据在网络中传输的过程就是下图中封装和解封装的过程,发送方通过各种封装处理,最终将数据转换成比特流的形式,比特流在信号传输的硬件媒介中传输,接收方再将比特流进行解封装处理。

1.3.1 物理层

规定了如何为网络通信实现最底层的物理连接,以及物理设备的机械、电气、功能和过程特性。如:如何使用电缆和接头的类型、用来传送信号的电压等。

注:网络通信过程中所需要的物理媒介(网线、线缆等)并不属于物理层;因为物理层实际上是一种规定, 规定这些物理媒介设备在连接网络时的各种规格、参数以及工作方式;但双绞线、线缆等物理媒介又是物理层实现的。

1.3.2 数据链路层——MAC地址(网卡)

规定了如何进行物理地址寻址、如何在物理线路上进行数据(帧frame)的可靠传递以及流量控制。数据链路层协议有SLIP协议、CSLIP协议、PPP协议等。交换机,对帧解码并根据帧中包含的信息把数据发送到正确的接收方,所以交换机是工作在数据链路层的。

1.3.3 网络层——IP地址

规定了通过哪些网络节点、什么样的网络路径来将数据(数据包)从发送方发送到接收方。在网络层中,确定了从节点A发数据到节点B的网络路径,经过哪些节点。网络层既可以建立LAN通信系统,更主要的是可以在WAN网络系统中建立通信,这是因为它有自己的路由地址结构,通过路由协议(又称可路由协议)进行网络通信的路由工作。 (路由器在网络层工作)

1.3.4 传输层

负责总体的数据传输和数据控制,提供端到端的交换数据的机制。传输层对数据(段)进行分割和重组,并且进行流量控制和根据接收方的接收数据能力确定适当的传输速率。例如以太网无法处理大于1500字节的数据包,传输层将数据分割成数据片段,并对小数据片段进行序列编号。接收方的传输层将根据序列编号对数据进行重组。传输层协议有TCP协议、UDP协议等。

1.3.5 会话层

在网络中的两个节点之间建立、维持和终止通信。

1.3.6 表示层

在应用程序和网络之间对数据进行格式化,使之能够被另一方理解。即发送方的表示层将应用程序数据的抽象语法转换成网络适用于OSI网络传输的传送语法,接收方则相反。除此之外,表示层还可对数据进行加密与解密。

1.3.7 应用层

最顶层的OSI层,为应用程序提供网络服务。如为电子邮件、文件传输功能提供协议支持。应用层协议有HTTP协议、FTP协议、SMTP协议等。

1.4 TCP/IP协议

虽然OSI参考模型是国际化标准组织提出了的一个标准,但由于他定义的太过复杂而错过了时间节点,让TCP/IP协议成为了计算机网络通信的事实标准。

从“TCP/IP”名字上来看,貌似这只是tcp协议和ip协议,但是实际上,这是很多协议很多协议组成的一个协议集合,我们把这集合统称为 TCP/IP协议族,简称为TCP/IP协议。对于TCP/IP 协议族按层次分别分为以下 4 层:应用层、传输层、网络层和数据链路层。通过下图我们可以了解TCP/IP协议结构并对比了解学习TCP/IP 四层参考模型和 OSI 七层参考模型
在这里插入图片描述

1.4.1 TCP/IP——网络接口层

TCP/IP网络接口层

主要作用一:数据封装/解封装成帧(frame)。 为了保证可靠传输,网络层传过来的数据在这里被加工成了可被物理层传输的结构包——帧。帧中除了包括需要传输的数据外,还包括发送方和接收方的物理地址以及检错和控制信息。其中的物理地址确定了帧将发送到何处,检错和控制信息则是用来保证数据的无差错到达。数据帧结构如下(Address均为mac地址):

主要作用二:控制帧传输。 控制帧的传输主要体现在反馈重发、计时器、帧序号方面。接收方通过对帧的差错编码(奇偶校验码或 CRC 码)的检查,来判断帧在传输过程中是否出错,并向发送发进行反馈,如果传输发生差错,则需要重发纠正。作为发送发,如果在发送帧后,会同时启动定时器,如果帧发送后在一定时间内没有收到反馈,为了避免传输停滞不前,则在计时器Timeou后认为帧传输出错,自动重发。为了避免多次收到同一帧并将其递交给网络层的情况发生,则需要对每个发送的帧进行编号,接收方以此来判断该帧是否重复接受了。

主要作用三:流量控制。 由于收发双方各自使用的设备工作速率和缓冲存储空间的差异,可能出现发送方的发送能力大于接收方接收能力的现象,此时若不对发送方的发送速率做适当的限制,前面来不及接收的帧将被后面不断发送来的帧“淹没”,从而造成帧的丢失而出错。由此可见,流量控制实际上是对发送方数据流量的控制,使其发送速率不超过接收方的速率。所以需要一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后再继续发送。

1.4.2 TCP/IP——网络层(网际层)

说到网络层不得不提的就是IP协议,它是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP、IGMP协议数据都以IP数据报格式传输。IP协议提供的是不可靠的、无连接的数据报传输服务。不可靠是指IP协议不会保证数据报能否成功到达目的地,仅提供传输服务,传输出错,则会丢弃出错的数据报。无连接是指IP协议对数据报的处理是独立的,这也意味着接收方不一定会按照发送顺序接收数据报。IP数据报格式如下:
IP头
IP地址分类

1.4.3 TCP/IP——传输层

传输层是在进程与进程通信层面上的。传输层有两个重要的协议——TCP(Transmission ControlProtocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。

UDP协议(犹如发短信)

UDP(User Datagram Protocol)即用户数据报协议,其传输机制决定了它的最大优点——,同时也决定了它最大的缺点——不可靠、不稳定

  • UDP是无连接的,发送数据之前不需要建立连接(TCP需要)。减少了开销和延时。

  • UDP是面向报文的,对IP数据报只做简单封装(8字节UDP报头)。减少报头开销。

  • UDP没有阻塞机制,宁愿阻塞时丢弃数据不传,也不阻塞造成延时。

  • UDP支持一对一、一对多、多对一、多对多通信

TCP协议(犹如打电话)

TCP(Transmission Control Protocol)传输控制协议,相对于UDP,TCP是面向连接的、提供可靠的数据传输服务。同时也是较UDP开销较大的、传输速度较慢的。

  • TCP提供可靠的、面向连接的数据传输服务。使用TCP通信之前,需要进行“三次握手”建立连接,通信结束后还要使用“四次挥手”断开连接。

  • TCP是点对点的连接。一条TCP连接只能连接两个端点。

  • TCP 提供可靠传输,无差错、不丢失、不重复、按顺序。

  • TCP 提供全双工通信,允许通信双方任何时候都能发送数据,发送方设有发送缓存,接收方设有接收缓存。

  • TCP 面向字节流 。TCP 并不知道所传输的数据的含义,仅把数据看作一连串的字节序列,它也不保证接收方收到的数据块和发送方发出的数据块具有大小对应关系。

TCP连接可靠性的体现:

(1)TCP报文段的长度可变,根据收发双方的缓存状态、网络状态而调整。

(2)当TCP收到发自TCP连接另一端的数据,它将发送一个确认。

(3)当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段,如果不能及时收到一个确认,将重发这个报文段。

(4)TCP将保持它首部和数据的检验和。如果通过检验和发现报文段有差错,这个报文段将被丢弃,等待超时重传。

(5)TCP将数据按字节排序,报文段中有序号,以确保顺序的正确性。

(6)TCP还能提供流量控制。TCP连接的每一方都有收发缓存。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

1.4.4 TCP/IP——应用层

关于应用层协议,不同的应用或者具体来说同一种应用不同的需求,都会使用不同的应用层协议。

常见的应用层协议使用的端口:
端口号名称说明
20ftp-dataFTP数据端口
21ftp文件传输协议(FTP)控制端口
22ssh安全shell(SSH)远程登陆服务器
23telnetTelnet远程登陆服务器
25smtp简单邮件传输协议(SMTP)
53dns域名服务(Domain Name Server)
69tftp简单文件传输协议
80http用于万维网(WWW)服务的超文本传输协议
123ntp网络时间协议(NTP)
161/162snmp简单网络管理协议(SNMP)
443httpd安全超文本传输协议(HTTPS)
1433mysqlmysql数据库服务程序默认端口
8080tomcatJava服务器程序默认端口

因为端口号是16位的。这也就意味着端口号的范围是0~65535。其中1~1024是被RFC3232规定好了的,被称作“众所周知的端口”(Well Known Ports), 监听该范围内端口的程序必须以root权限运行;从1025~65535的端口被称为动态端口(Dynamic Ports),可用来建立与其它主机的会话,也可由用户自定义用途。所以我们在写服务器程序时,一般使用该范围内的端口,当然应该尽量避免一些知名的端口或当前系统正在使用的端口。
在Linux中可以使用netstat命令查看当前系统正在使用的端口信息:
监听端口

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

园园顺顺崽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值