网络编程——常用协议解析

**

1、网络基础知识

**

1.1> 什么是OSI模型

OSI 模型(Open System Interconnection model)是一个由国际标准化组织?提出的概念模型,试图?供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。
它将计算机网络体系结构划分为七层,每层都可以提供抽象良好的接口。了解 OSI 模型有助于理解实际上互联网络的工业标准——TCP/IP 协议。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.2> OSI模型介绍

物理层
物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输;
eg:RJ45等将数据转化成0和1;
在这里插入图片描述

数据链路层:
数据链路层通过物理网络链路?供数据传输。不同的数据链路层定义了不同的网络和协 议特征,其中包括物理编址、网络拓扑结构、错误校验、数据帧序列以及流控;
可以简单的理解为:规定了0和1的分包形式,确定了网络数据包的形式;
在这里插入图片描述
网络层:
网络层负责在源和终点之间建立连接;
可以理解为,此处需要确定计算机的位置,怎么确定?IPv4,IPv6!
在这里插入图片描述

传输层
传输层向高层?提供可靠的端到端的网络数据流服务。
可以理解为:每一个应用程序都会在网卡注册一个端口号,该层就是端口与端口的通信!常用的(TCP/IP)协议;
在这里插入图片描述

会话层
会话层建立、管理和终止表示层与实体之间的通信会话;
建立一个连接(自动的手机信息、自动的网络寻址);
在这里插入图片描述

表示层:
表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别;
可以理解为:解决不同系统之间的通信,eg:Linux下的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字节. ——对应下图中的以太网数据

UDP(User Datagram protocol)用户数据报协议,它只提供应用进程寻址和简单的差错检测,并不提供其他功能。

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

在这里插入图片描述

**

2、TCP/IP 协议族

**

2.1> TCP/IP 协议族常用协议

应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
传输层:TCP,UDP
网络层:IP,ICMP,OSPF,EIGRP,IGMP
数据链路层:SLIP,CSLIP,PPP,MTU

  • 重要的 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,用户数据报协议),是OSI(Open 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).访问过程如下

HTTP+TCP网络传输示意图:
TCP
TCP协议的三次握手与四次关闭详解,传送门

IP数据包和TCP/UDP的数据包

在这里插入图片描述

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).HTTP+SSL(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/S(Client&&Server)结构的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 ABP vNext 中编写仓储单元测试的问题一则

一、问题新项目是基于 ABP vNext 框架进行开发的,所以我要求为每层编写单元测试。在同事为某个仓储编写单元测试的时候,发现了一个奇怪的问题。他的对某个聚合根的 A 字段进行了更新,随后对某个导航属性 B 也进行了变更,最后通过仓…

TCP协议——三次握手与四次关闭

1. TCP协议基础 网络编程基础见,传送门 TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。 在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。 三次握手…

TCP协议——流量控制和拥塞控制

** 一、流量控制 ** 1.1 什么是流量控制 Sender won’t overflow receiver’s buffer by transmitting too much, too fast. (防止发送方发的太快,耗尽接收方的资源,从而使接收方来不及处理) 1.2 流量控制的一些知识点 &#x…

征集.NET中国峰会议题

月初做的调查《》,参与人数576人,愿意参与分享.NET Core经验的142人,今天发起分会场主题演讲和闪电演讲议题.2014年微软组织成立.NET基金会,微软在成为主要的开源参与者的道路上又前进了一步。2014年以来已经有众多知名公司加入.N…

TCP协议——粘包与拆包

TCP的基础 TCP协议基础,传送门 TCP协议流量控制,传送门 1.1 什么是TCP粘包/拆包 TCP是个“流”协议,所谓流,就是没有界限的一串数据。大家可以想想河里的流水,是连成一片的,其间并没有分界线。TCP底层并…

你的通勤时间都去哪了?

大家好,我是Z哥。今天我来唠叨一下。最近无意间看到一份报告,关于我们职场人士上下班通勤时间的。有时候想想也挺无奈的,我们越想去发达一些的城市打拼,反而越被通勤这种琐碎的事情给耽误更多的奋斗时间。但是没办法,在…

规模化敏捷必须SAFe

引子:规模化敏捷转型从来不是一件容易的事情。当只有1-2个敏捷团队进行协同的时候,计划和工作同步是可控的。团队和产品负责人互相聊一聊,基本就能搞清楚需要做什么,一个简单的SOS架构(Scrum of Scrums)就能…

http1.0 http1.1 http2 之间的区别

一、HTTP基础 1.1 HTTP定义 HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。 1.2 HTTP发展史 1.3 HTTP1.0 早先1.0的HTTP版本,是一种无状态、无连接的应用层协议。 …

漫画:程序员一时单身一时爽,一直单身...有点惨

1妹子没吃早饭早啊敲哥,你在吃早饭啊嗯啊,你吃了吗?没呢,早上实在是太赶了,没来得及嗯...那我还是换个地方吃吧免得馋着你。。。2代码重要还是女朋友重要女朋友能哄好,代码能哄好吗?写代码是赚钱…

AutoMapper多个对象映射到一个Dto对象

一、定义源映射对象为了体现AutoMapper映射特性,在SocialAttribute中的Name属性没有定义在People中,People的Ear属性也不存在与SocialAttribute和PhysicalAttribute中。代码如下:二、注入AutoMapper例子中使用的IOC容器是Autofac,…

cookie 与 session

1 背景介绍 什么是会话? 用户打开一个浏览器, 点击多个超链接, 访问服务器多个web资源, 然后关闭浏览器, 整个过程称之为一个会话。我们知道,HTTP协议是一种"无状态"协议,客户浏览器与服务器建立连接,发出请求&#x…

Java写一个简单的静态文件的HTTP服务器(基于Socket)

** 一、实现思路 ** 1、使用 ServerSocket 监听某一端口,然后等待连接获取 Socket对象。 2、创建一个类 HttpServer 继承 java.lang.Thread 类,重写 run()方法,执行浏览器请求。 3、获得浏览器请求,解析资源文件路径。 4、读…

asp.net core 使用HttpClientFactory Polly实现熔断降级

前言在NET Core2.1后也是增加更新了很多东西,当然HttpClientFactory更新中的一部分.虽然说HttpClient这个实现了disposable,但使用它的时候用using包装块的方式通常不是最好的选择。处理HttpClient,底层socket套接字不会立即释放。该HttpClient类是未多个请求重复使用而创建的。…

Azure Application Insights REST API使用教程

本文是Azure Application Insights REST API的简单介绍,并会包含一个通过Python消费API的示例/小工具。新加入的team中的一项工作是制作日常的运维报表,制作方式是手工前往portal.azure.com,在网页中多次执行不同的查询语句、导出excel&#…

用Java Socket实现SMTP邮件发送

目录: 1、邮件基础概念2、Java Mail API介绍3、收发邮件代码示例 PS:如果你想直接拿代码用,可以直接跳到第3部分。 ** 一、邮件基础概念 ** 1.1 邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件…

微软开源新字体Cascadia Code,源于Windows Terminal

微软开源了一套新的字体 Cascadia Code。Cascadia Code 是微软在 5 月份的 Build 大会上宣布推出的等宽字体,微软介绍它是与新的终端 Windows Terminal 一起开发的,官方建议将其与终端应用和 VS、VS Code 等文本编辑器一起使用。Cascadia Code 为命令行和…

进程间通讯的7种方式

1、常见的通信方式 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘…

官宣!VS Code Python 全新功能在 PyCon China 全球首发!

北京时间 2019 年 9 月 21 日,PyCon China 2019 在上海举行。在下午的演讲中,来自微软开发工具事业部的资深研发工程师在演讲中,我们看到了 Azure Notebook 与 VS Code 对 Python 的强大的支持。然而,鱼和熊掌似乎不可兼得。Jupyt…

什么是CDN

一、cdn简介 CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。…

高性能最终一致性框架Ray之基本概念原理

一、Actor介绍Actor是一种并发模型,是共享内存并发模型的替代方案。共享内存模型的缺点:共享内存模型使用各种各样的锁来解决状态竞争问题,性能低下且让编码变得复杂和容易出错。共享内存受限于单节点的服务器资源限制。Actor模型的优点&…