西安网站开发高端网站开发,低代码开发,无锡优化网站,用.net做的网站**
1、网络基础知识
**
1.1 什么是OSI模型
OSI 模型(Open System Interconnection model)是一个由国际标准化组织?提出的概念模型,试图?供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。 它将计算机网络体系结构划分为七层,每层都可以提供抽象良好的…**
1、网络基础知识
**
1.1 什么是OSI模型
OSI 模型(Open System Interconnection model)是一个由国际标准化组织?提出的概念模型,试图?供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。 它将计算机网络体系结构划分为七层,每层都可以提供抽象良好的接口。了解 OSI 模型有助于理解实际上互联网络的工业标准——TCP/IP 协议。 1.2 OSI模型介绍
物理层 物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输 egRJ45等将数据转化成0和1
数据链路层: 数据链路层通过物理网络链路?供数据传输。不同的数据链路层定义了不同的网络和协 议特征,其中包括物理编址、网络拓扑结构、错误校验、数据帧序列以及流控; 可以简单的理解为规定了0和1的分包形式确定了网络数据包的形式 网络层: 网络层负责在源和终点之间建立连接; 可以理解为此处需要确定计算机的位置怎么确定IPv4IPv6
传输层 传输层向高层?提供可靠的端到端的网络数据流服务。 可以理解为每一个应用程序都会在网卡注册一个端口号该层就是端口与端口的通信常用的TCPIP协议
会话层 会话层建立、管理和终止表示层与实体之间的通信会话 建立一个连接自动的手机信息、自动的网络寻址;
表示层: 表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别; 可以理解为解决不同系统之间的通信egLinux下的QQ和Windows下的QQ可以通信
应用层: OSI 的应用层协议包括文件的传输、访问及管理协议(FTAM) ,以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等; 规定数据的传输协议 常见的应用层协议 互联网分层结构的好处: 上层的变动完全不影响下层的结构。
1.4 TCP/IP 协议基本概念
OSI 模型所分的七层,在实际应用中,往往有一些层被整合,或者功能分散到其他层去。TCP/IP 没有照搬 OSI 模型,也没有 一个公认的 TCP/IP 层级模型,一般划分为三层到五层模型来描述 TCP/IP 协议。
在此描述用一个通用的四层模型来描述,每一层都和 OSI 模型有较强的相关性但是又可能会有交叉TCP/IP 的设计,是吸取了分层模型的精华思想——封装。每层对上一层?供服务的时 候,上一层的数据结构是黑盒,直接作为本层的数据,而不需要关心上一层协议的任何细节
TCP/IP 分层模型的分层以以太网上传输 UDP 数据包如图所示; 1.5 四层模型介绍 网络接口层 网络接口层包括用于协作IP数据在已有网络介质上传输的协议。 它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,?供 TCP/IP 协议的数据结构和实际物理硬件之间的接口。 可以理解为确定了网络数据包的形式。
网间层 网间层对应于 OSI 七层参考模型的网络层本层包含 IP 协议、RIP 协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来?供网络诊断信息 可以理解为该层时确定计算机的位置。
传输层 传输层对应于 OSI 七层参考模型的传输层,它?供两种端到端的通信服务。其中 TCP 协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP 协议(Use Datagram Protocol)提供不可靠的用户数据报服务。 TCP:三次握手、四次挥手;UDP:只发不管别人收不收得到–任性哈
应用层 应用层对应于 OSI 七层参考模型的应用层和表达层 不明白的再看看7层参考模型的描述。
1.6 数据包
宽泛意义的数据包:每一个数据包都包含标头和数据两个部分.标头包含本数据包的一些说明.数据则是本数据包的内容.
细分数据包
应用程序数据包: 标头部分规定应用程序的数据格式.数据部分传输具体的数据内容. ——对应下图中的数据
TCP/UDP数据包:标头部分包含双方的发出端口和接收端口. UDP数据包:标头’长度:8个字节,数据包总长度最大为65535字节,正好放进一个IP数据包. TCP数据包:理论上没有长度限制,但是,为了保证网络传输效率,通常不会超过IP数据长度,确保单个包不会被分割. ——对应下图中的UDP数据
IP数据包: 标头部分包含通信双方的IP地址,协议版本,长度等信息. 标头’长度:20~60字节,数据包总长度最大为65535字节. ——对应下图中的IP数据
以太网数据包: 最基础的数据包.标头部分包含了通信双方的MAC地址,数据类型等. 标头’长度:18字节,数据’部分长度:46~1500字节. ——对应下图中的以太网数据
UDPUser Datagram protocol用户数据报协议它只提供应用进程寻址和简单的差错检测并不提供其他功能。
TCPTransmission Control Protocol传输控制协议是面向连接的协议也就是说在收发数据前必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来其中的过程非常复杂只简单的描述下这三次对话的简单过程主机A向主机B发出连接请求数据包“我想给你发数据可以吗”这是第一次对话主机B向主机A发送同意连接和要求同步同步就是两台主机一个在发送一个在接收协调工作的数据包“可以你什么时候发”这是第二次对话主机A再发出一个数据包确认主机B的要求同步“我现在就发你接着吧”这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步经过三次“对话”之后主机A才向主机B正式发送数据。 **
2、TCP/IP 协议族
**
2.1 TCP/IP 协议族常用协议
应用层TFTPHTTPSNMPFTPSMTPDNSTelnet 等等 传输层TCPUDP 网络层IPICMPOSPFEIGRPIGMP 数据链路层SLIPCSLIPPPPMTU
重要的 TCP/IP 协议族协议进行简单介绍:
IP(Internet Protocol,网际协议)是网间层的主要协议,任务是在源地址和和目的地址之间传输数据。IP 协议只是尽最大努力来传输数据包,并不保证所有的包都可以传输 到目的地,也不保证数据包的顺序和唯一。
IP 定义了 TCP/IP 的地址,寻址方法,以及路由规则。现在广泛使用的 IP 协议有 IPv4 和 IPv6 两种:IPv4 使用 32 位二进制整数做地址,一般使用点分十进制方式表示,比如 192.168.0.1。 IP 地址由两部分组成,即网络号和主机号。故一个完整的 IPv4 地址往往表示 为 192.168.0.1/24 或192.168.0.1/255.255.255.0 这种形式。 IPv6 是为了解决 IPv4 地址耗尽和其它一些问题而研发的最新版本的 IP。使用 128 位 整数表示地址,通常使用冒号分隔的十六进制来表示,并且可以省略其中一串连续的 0,如:fe80::200:1ff:fe00:1。
ICMP(Internet Control Message Protocol,网络控制消息协议)是 TCP/IP 的 核心协议之一,用于在 IP 网络中发送控制消息,?供通信过程中的各种问题反馈。 ICMP 直接使用 IP 数据包传输,但 ICMP 并不被视为 IP 协议的子协议。常见的联网状态诊断工具比如依赖于 ICMP 协议;
TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的,可靠的, 基于字节流传输的通信协议。TCP 具有端口号的概念,用来标识同一个地址上的不 同应用。?述 TCP 的标准文档是 RFC793。
UDP(UserDatagramProtocol,用户数据报协议)是一个面向数据报的传输层协 议。UDP 的传输是不可靠的,简单的说就是发了不管,发送者不会知道目标地址 的数据通路是否发生拥塞,也不知道数据是否到达,是否完整以及是否还是原来的 次序。它同 TCP 一样有用来标识本地应用的端口号。所以应用 UDP 的应用,都能 够容忍一定数量的错误和丢包,但是对传输性能敏感的,比如流媒体、DNS 等。
ECHO(EchoProtocol,回声协议)是一个简单的调试和检测工具。服务器器会 原样回发它收到的任何数据,既可以使用 TCP 传输,也可以使用 UDP 传输。使用 端口号 7 。
DHCP(DynamicHostConfigrationProtocol,动态主机配置协议)是用于局域 网自动分配 IP 地址和主机配置的协议。可以使局域网的部署更加简单。
DNS(DomainNameSystem,域名系统)是互联网的一项服务,可以简单的将用“.” 分隔的一般会有意义的域名转换成不易记忆的 IP 地址。一般使用 UDP 协议传输, 也可以使用 TCP,默认服务端口号 53。?
FTP(FileTransferProtocol,文件传输协议)是用来进行文件传输的标准协议。 FTP 基于 TCP 使用端口号 20 来传输数据,21 来传输控制信息。
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一个简化的文 件传输协议,其设计非常简单,通过少量存储器就能轻松实现,所以一般被用来通 过网络引导计算机过程中传输引导文件等小文件;
SSH(SecureShell,安全Shell),因为传统的网络服务程序比如TELNET本质上都极不安全,明文传说数据和用户信息包括密码,SSH 被开发出来避免这些问题, 它其实是一个协议框架,有大量的扩展冗余能力,并且?供了加密压缩的通道可以 为其他协议使用。
POP(PostOfficeProtocol,邮局协议)是支持通过客户端访问电子邮件的服务, 现在版本是 POP3,也有加密的版本 POP3S。协议使用 TCP,端口 110。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是现在在互联网 上发送电子邮件的事实标准。使用 TCP 协议传输,端口号 25。
HTTP(HyperTextTransferProtocol,超文本传输协议)是现在广为流行的WEB 网络的基础,HTTPS 是 HTTP 的加密安全版本。协议通过 TCP 传输,HTTP 默认 使用端口 80,HTTPS 使用 443。
2.2 TCP UDP
TCP提供一对一的、面向连接的可靠通信服务。TCP建立连接对发送的数据包进行排序和确认并恢复在传输过程中丢失的数据包。与TCP不同UDP提供一对一或一对多的、无连接的不可靠通信服务。 不论是TCP/IP还是在OSI参考模型中任意相邻两层的下层为服务提供者上层为服务调用者。下层为上层提供的服务可分为两类面向连接服务和无连接服务。
面向连接的网络服务(TCP) 面向连接的网络服务又称为虚电路Virtual Circuit服务它具有网络连接建立、数据传输和网络连接释放三个阶段。是按顺序传输可靠的报文分组方式适用于指定对象、长报文、会话型传输要求。 面向连接服务以电话系统为模式。要和某个人通话首先拿起电话拨号码通话然后挂断。同样在使用面向连接的服务时用户首先要建立连接使用连接然后释放连接。连接本质上像个管道发送者在管道的一端放入物体接收者在另一端按同样的次序取出物体其特点是收发的数据不仅顺序一致而且内容也相同。–类似打电话 无连接的网络服务 无连接网络服务的两实体之间的通信不需要事先建立好一个连接。无连接网络服务有3种类型数据报Datagram、确认交付Confirmed Delivery与请求回答Request reply。 无连接服务以邮政系统为模式。每个报文信件带有完整的目的地址并且每一个报文都独立于其他报文由系统选定的路线传递。在正常情况下当两个报文发往同一目的地时先发的先到。但是也有可能先发的报文在途中延误了后发的报文反而先收到而这种情况在面向连接的服务中是绝对不可能发生的。–类似发短信 TCP的优缺点
从原理上TCP的优势有
简单直接的长连接可靠的信息传输数据包的大小没有限制
TCP最糟糕的特性是它对阻塞的控制。 一般来说TCP假定丢包是由于网络带宽不够造成的所以发生这种情况的时候TCP就会减少发包速度。 在3G或WiFi下一个数据包丢失了你希望的是立马重发这个数据包然而TCP的阻塞机制却完全是采用相反的方式来处理 而且没有任何办法能够绕过这个机制因为这是TCP协议构建的基础。这就是为什么在3G或者WiFi环境下ping值能够上升到1000多毫秒的原因。 一个采用TCP的游戏必须能够处理好突发的延迟问题纸牌客户端就很典型对突发性的一秒的延迟玩家也不会产生什么抱怨或者是拥有缓解延迟问题的好方法。 魔兽世界中是有多重连接的, 应该是UDP和TCP共用的, UDP用于不要求数据可靠的数据, TCP用于传输有可靠性要求的数据. 例如周围人物的动向NPC移动技能动画指令等则可以使用UDP这个UDP并不保证可靠但丢包影响不大。对于技能, 金钱经验等重要的人物数据, 必须通过TCP保证. UDP的优缺点
UDP User Datagram Protocol用户数据报协议是OSIOpen System Interconnection开放式系统互联 参考模型中一种无连接的传输层协议提供面向事务的简单不可靠信息传送服务
UDP是基于数据包构建这意味着在某些方面需要你完全颠覆在TCP下的观念。UDP只使用一个socket进行通信不像TCP需要为每一个客户端建立一个socket连接。 在选择使用协议的时候选择UDP必须要谨慎。 在网络质量令人十分不满意的环境下UDP协议数据包丢失会比较严重。 但是由于UDP的特性它不属于连接型协议因而具有资源消耗小处理速度快的优点 所以通常音频、视频和普通数据在传送时使用UDP较多因为它们即使偶尔丢失一两个数据包也不会对接收结果产生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议。 那么到底是用UDP还是TCP呢
如果是由客户端间歇性的发起无状态的查询并且偶尔发生延迟是可以容忍那么使用HTTP/HTTPS吧。如果客户端和服务器都可以独立发包但是偶尔发生延迟可以容忍比如在线的纸牌游戏许多MMO类的游戏那么使用TCP长连接吧。如果客户端和服务器都可以独立发包而且无法忍受延迟比如大多数的多人动作类游戏一些MMO类游戏那么使用UDP吧。 这些也应该考虑在内你的MMO客户端也许首先使用HTTP去获取上一次的更新内容然后使用UDP跟游戏服务器进行连接。 2.3 TCP 工作原理
TCP–传输控制协议 TCP全称是Transmission Control Protocol中文名为传输控制协议它可以提供可靠的、面向连接的网络数据传递服务。
传输控制协议主要包含下列任务和功能 确保IP数据报的成功传递。 对程序发送的大块数据进行分段和重组。 确保正确排序及按顺序传递分段的数据。 通过计算校验和进行传输数据的完整性检查。 根据数据是否接收成功发送肯定消息。通过使用选择性确认也对没有收到的数据发送否定确认。 为必须使用可靠的、基于会话的数据传输程序如客户端/服务器数据库和电子邮件程序提供首选传输方法。
TCP工作原理 TCP的连接建立过程又称为TCP三次握手; 首先发送方主机向接收方主机发起一个建立连接的同步SYN请求 接收方主机在收到这个请求后向发送方主机回复一个同步/确认SYN/ACK应答 发送方主机收到此包后再向接收方主机发送一个确认ACK此时TCP连接成功建立. 一旦初始的三次握手完成在发送和接收主机之间将按顺序发送和确认段。关闭连接之前TCP使用类似的握手过程验证两个主机是否都完成发送和接收全部数据。 完成三次握手客户端与服务器开始传送数据。
HTTP(Hypertext Transfer Protocol)超文本传输协议(80) 1).请求报文:请求行 通用信息头 请求头 实体头 报文主体 2).应答报文:状态行 通用信息头 响应头 实体头 报文主体 3).访问过程如下 HTTPTCP网络传输示意图 TCP协议的三次握手与四次关闭详解传送门
IP数据包和TCPUDP的数据包 2.4 HTTP协议常用状态码
4).状态码A).1xx:指示信息--表示请求已接收继续处理100——客户必须继续发出请求101——客户要求服务器根据请求转换HTTP协议版本B).2xx:成功--表示请求已被成功接收、理解、接受200——请求成功201——提示知道新文件的URL202——接受和处理、但处理未完成203——返回信息不确定或不完整204——请求收到但返回信息为空205——服务器完成了请求用户代理必须复位当前已经浏览过的文件206——服务器已经完成了部分用户的GET请求C).3xx:重定向--要完成请求必须进行更进一步的操作300——请求的资源可在多处得到301——删除请求数据302——在其他地址发现了请求数据303——建议客户访问其他URL或访问方式304——客户端已经执行了GET但文件未变化305——请求的资源必须从服务器指定的地址得到306——前一版本HTTP中使用的代码现行版本中不再使用307——申明请求的资源临时性删除D).4xx:客户端错误--请求有语法错误或请求无法实现400——错误请求如语法错误401——请求授权失败402——保留有效ChargeTo头响应403——请求不允许404——没有发现文件、查询或URl405——用户在Request-Line字段定义的方法不允许406——根据用户发送的Accept拖请求资源不可访问407——类似401用户必须首先在代理服务器上得到授权408——客户端没有在用户指定的饿时间内完成请求409——对当前资源状态请求不能完成410——服务器上不再有此资源且无进一步的参考地址411——服务器拒绝用户定义的Content-Length属性请求412——一个或多个请求头字段在当前请求中错误413——请求的资源大于服务器允许的大小414——请求的资源URL长于服务器允许的长度415——请求资源不支持请求项目格式416——请求中包含Range请求头字段在当前请求资源范围内没有range指示值请求也不包含If-Range请求头字段417——服务器不满足请求Expect头字段指定的期望值如果是代理服务器可能是下一级服务器不能满足请求E).5xx:服务器端错误--服务器未能实现合法的请求500——服务器产生内部错误501——服务器不支持请求的函数502——服务器暂时不可用有时是为了防止发生系统过载503——服务器过载或暂停维修504——关口过载服务器使用另一个关口或服务来响应用户等待时间设定值较长505——服务器不支持或拒绝支请求头中指定的HTTP版本 HTTPS(Hypertext Transfer Protocol Secure)超文本传输安全协议(443) 1).HTTPSSL(Netscape的安全套接层) a).SSL((Secure Sockets Layer) 安全套接层(40-128) b).TLS(Transport Layer Security) 传输层安全 2).数据加密(SSL);身份认证(CA证书) TCP(Transmission Control Protocol)传输控制协议 1).面向连接 2).可靠传输的情况, 应用于文件传输, 重要状态更新等场景 3).传输大量数据 4).传输慢 UDP(User Data Protocol)用户数据协议 1).面向非连接 2).高速传输和实时性要求较高的通信领域(可靠性需要应用层控制) 3).传输少量数据 4).传输快 **
三、Socket
**
3.1 Socket 简介
Socket起源于 20 世 纪 80 年代早期,最早由 4.1c BSD UNIX 引入,所以也称之为“BSD Socket 或者 Berkeley Socket”。BSD Socket 是事实上的网络应用编程接口标准,其它编程语言往往也是用与这套用C写成的编程接口类似接口。 用 Socket 能够实现网络上的不同主机之间或同一主机的不同对象之间的数据通信。所以,现在 Socket 已经是一类通用通信接口的集合。 大的类型可以分为网络 Socket 和本地 Socket 两种。
本地上的两个进程如何通信?
内存共享(munmap())消息和队列管道(匿名管道pipe()和命名管道mkfifo())信号量P V操作;RPC remote protocol control本地Socket;
网路上的两个进程如何通信 本地进程间通信(IPC)通过PID(在终端中输入ps-ef可查看PID)可以唯一确定彼此然后通过共享内存消息队列来通; 网络上的两个进程确定彼此需要IP与端口号通过传输层(TCP/UDP)协议进行通信 这就是网络 Socket 。 socket可以理解为在TCP/UDP 加一个端口绑定。 网络socket和 本地 Socket对比 在同一个设备上两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程在本地进程通讯中可以使用PID来唯一标示一个进程 PID只在本地唯一网络中的两个进程PID冲突几率很大此时显然不行了怎么办 IP层的ip地址可以唯一标示主机而TCP层协议和端口号可以唯一标示主机的一个进程所以可以利用ip地址协议端口号唯一标示网络中的一个进程。
Socket通信就是一种确定了端口号的TCP/IP通信或者说Socket通信与IP通信差别就是端口确定协议确定。
用一张图表达一下 端口的打开是双方的在C/SClientServer结构的TCP连接中不仅仅要注意到S的端口(监听的)实际上C也开了一个端口而C端的端口是动态端口TCP连接建立的时候C端的端口会在三次握手结束后确定动态打开一个,这个端口不受用户/程序员的控制。
Socket 代码编写步骤 创建客户端Socket 创建服务器Socket 连接到服务器(Socket编程) 发送数据给服务器 接收服务器返回的数据 关闭Socket : close(socketNumber)
一张经典的Socket C/S的步骤图。
3.2 Socket编程优劣势 1).socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口这就是Socket编程接口 2).连接过程:服务器监听客户端请求连接确认 3).优势与劣势 A).优势: a).传输数据为字节级传输数据可自定义数据量小b).传输数据时间短性能高c).适合于客户端和服务器端之间信息实时交互 d).可以加密,数据安全性强B).劣势: a).需对传输的数据进行解析转化成应用级的数据
b).相对于HTTP协议传输增加了开发量
c).对开发人员的开发水平要求高 4).基于Socket传输的特点其适用于对传输速度安全性实时交互费用等要求高的应用中如网络游戏手机应用银行内部交互等 **
四、拓展
**
http://geosmart.github.io/2017/09/17/Web开发常用协议/
https://www.cnblogs.com/fzz9/p/8964513.htm
Socket https://blog.csdn.net/alpha_love/article/details/62043077