网络传输

Java基础(19)——网络编程

拥有回忆 提交于 2020-01-16 15:08:02
目录 第一章 网络编程入门 1.1软件结构 1.2 网络通信协议 1.3 协议分类 1.4 网络编程三要素 协议 IP地址 端口号 第二章 TCP通信程序 2.1 概述 2.2 Socket类 构造方法 成员方法 2.3 ServerSocket类 构造方法 成员方法 2.4 简单的TCP网络程序 TCP通信分析图解 客户端向服务器发送数据 服务器向客户端回写数据 第三章 综合案例 3.1 文件上传案例 文件上传分析图解 基本实现 文件上传优化分析 优化实现 信息回写分析图解 回写实现 3.2 模拟B\S服务器(扩展知识点) 案例分析 案例实现 访问效果 第一章 网络编程入门 1.1软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。 B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。 网络编程 ,就是在一定的协议下,实现两台计算机的通信的程序。 1.2 网络通信协议 **网络通信协议:**通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议

HTTP性能极限优化

百般思念 提交于 2020-01-13 13:33:49
无论你在做前端、后端还是运维,HTTP都是不得不打交道的网络协议。它是最常用的应用层协议,对它的优化,既能通过降低时延带来更好的体验性,也能通过降低资源消耗带来更高的并发性。 可是,学习HTTP不久的同学,很难全面说出HTTP的所有优化点。这既有可能是你没好好准备过大厂的面试:-),也有可能你没有加入一个快速发展的项目,当产品的用户量不断翻番时,需求会倒逼着你优化HTTP协议。 这篇文章是根据我在2019年GOPS全球运维大会上海站的演讲PPT,重新提炼文字后的总结。我希望能 从四个全新的维度,带你覆盖绝大部分的HTTP优化技巧 。这样,即使还不需要极致方法去解决当前的性能瓶颈,也会知道优化方向在哪,当需求来临时,能够到Google上定向查阅资料。 第一个维度,是从编码效率上,更快速地把消息转换成更短的字符流。这是最直接的性能优化点。 一、编码效率优化 如果你对HTTP/1.1协议做过抓包分析,就会发现它是用“ whitespace-delimited ”方式编码的。用空格、回车来编码,是因为HTTP在诞生之初 追求可读性 ,这样更有利于它的推广。 然而在当下,这种低效的编码方式已经严重影响性能了,所以2009年Google推出了基于二进制的SPDY协议,大幅提升了编码效率。2015年,稍做改进后它被确定为HTTP/2协议,现在50%以上的站点都在使用它。 这是编码优化的大方向

TCP/IP四层模型和OSI七层模型的概念

痴心易碎 提交于 2020-01-12 13:52:36
转: http://blog.csdn.net/superjunjin/article/details/7841099/ TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。 TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。 OSI七层模型 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范

前端应该掌握的web基础和网络知识

喜夏-厌秋 提交于 2020-01-12 12:42:25
* 关于HTTP协议 http协议是www服务器和用户请求代理之间通过应答模式来传输超文本内容的一种协议,它是基于请求与响应、无状态、应用层的一种协议。大多数的web应用都建立 在http协议的基础之上。 *********************************************************** http的工作流程: 在进行http协议会话的过程中,首先会有一个Tcp/ip连接的过程,客户端与服务器端会通过socket三次握手建立连接; 建立连接成功之后,客户端向服务器端发送请求报文;(发送数据) 服务器端处理请求,并返回响应报文作出应答; 服务器断开Tcp连接,如果服务器端或客户端头部包含有connection为keep-alive的头域信息,客户端与服务器端会继续保存连接,在下次请求时会使用这次的连接。 *********************************************************** 在HTTP 1.1协议中,任何http请求的报文头部域中都默认包含了keep-alive头域信息,所以基于http1.1协议的请求连接在一段时间内都是持续有效的; 在HTTP1.0协议中,虽然默认请求的服务器返回是没有keep-alive,但是如果要基于http1.0协议建立长连接,可以在请求消息中包含connection为keep

tcp/ip协议和http协议

南笙酒味 提交于 2020-01-12 08:19:56
TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议:应用层(telnet, ftp, http, smtp, dns等),传输层(tcp, udp),网络层(ip,icmp,arp,rarp),网络接口层(各种物理通信网络接口) 三次握手 四次挥手 网络接口层: 主要是指物理层次的一些接口,比如电缆等. 网络层: 提供独立于硬件的逻辑寻址,实现物理地址与逻辑地址的转换. 在 TCP / IP 协议族中,网络层协议包括 IP 协议(网际协议),ICMP 协议( Internet 互联网控制报文协议),以及 IGMP 协议( Internet 组管理协议). 3) 传输层: 为网络提供了流量控制,错误控制和确认服务. 在 TCP / IP 协议族中有两个互不相同的传输协议: TCP(传输控制协议)和 UDP(用户数据报协议). 4) 应用层: 为网络排错,文件传输,远程控制和 Internet 操作提供具体的应用程序 2.数据包 在 TCP / IP 协议中数据先由上往下将数据装包,然后由下往上拆包 在装包的时候,每一层都会增加一些信息用于传输,这部分信息就叫报头,当上层的数据到达本层的时候,会将数据加上本层的报头打包在一起,继续往下传递. 在拆包的时候,每一层将本层需要的报头读取后,就将剩下的数据往上传. 3.网络接口层

【计算机网络】二十七. 传输层--TCP协议的拥塞控制

不问归期 提交于 2020-01-11 14:09:25
TCP协议的拥塞控制 目录 一、流量控制与拥塞控制的区别 二、拥塞控制的方法 (1)慢启动算法 (2)拥塞避免算法 注:转载请标明原文出处链接: https://lvxiaowen.blog.csdn.net/article/details/103934671 一、流量控制与拥塞控制的区别 一条数据链路经过非常多的设备,数据链路中各个部分都有可能成为网路传输的瓶颈。 流量控制考虑点对点的通信量的控制。 拥塞控制考虑整个网络,是全局性的考虑,报文超时则认为是拥塞。 二、拥塞控制的方法 (1) 慢启动算法 由小到大逐渐增加发送数据量,每收到一个报文确认,就加一。 (2)拥塞避免算法 维护一个拥塞窗口的变量,只要网络不拥塞,就试探着拥塞窗口调大。 参考资料: [1] https://coding.imooc.com/class/355.html 来源: CSDN 作者: 口口lv 链接: https://blog.csdn.net/lxw234lxw/article/details/103934671

Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)

天涯浪子 提交于 2020-01-11 03:22:43
catalog 0. 引言 1. Windows 2000网络结构和OSI模型 2. NDIS驱动 3. NDIS微端口驱动编程实例 4. NDIS中间层驱动编程实例 5. NDIS协议层驱动编程实例 6. TDI驱动 7. TDI的过滤框架 8. WFP(Windows Filtering Platform windows过滤平台) 0. 引言 最早出现的网络驱动应该是网卡驱动,这是Windows的下进行网络安全攻防常见的需求,为了进一步分割应用程序的网络数据传输与下层协议直到下层硬件的关系,又出现了协议驱动,后来微软和硬件商联合制定了NDIS标准,作为从硬件到协议的内核驱动程序的调用接口标准,而协议驱动与应用层的API之间,则出现了TDI接口,即从上到下的关系是 应用层API -> TDI -> 协议驱动 -> NDIS -> 下层硬件 0x1: 网卡驱动 网卡驱动程序(Device Driver)全称为"设备驱动程序",是一种可以使计算机中央处理器: CPU控制和使用设备的特殊程序,相当于硬件的接口,操作系统通过这个接口,控制硬件设备的工作。所有的硬件都要安装驱动程序,没有驱动程序的硬件是运行不了的,就像一辆有轮胎但是没有传动轴的汽车一样跑不起来,控制不了 假如某设备的驱动程序未能正确安装,便不能正常工作。 网卡驱动程序就是CPU控制和使用网卡的程序

如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?

懵懂的女人 提交于 2020-01-10 19:33:23
网络程序设计知识总结 网络相关工具 在网络相关的命令工具调研中我选取了 nslookup 作为案例。 详细可以参考 我的博客 nslookup作用 nslookup,全称是name server lookup,也就是域名查询。nslookup是一个用于查询Internet域名信息或者诊断DNS服务器问题的工具。 nslookup可以指定查询的类型,能够查询到DNS记录的生存时间,并且还能够在命令中使用参数指定使用哪个DNS服务器进行解释。 在已经安装了TCP/IP协议的电脑上均可以使用这个命令。 总结起来,nslookup命令主要用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。 nslookup的应用场景 一般来说,我们在一台主机上配置好DNS服务器,添加了相应的记录之后,只要IP地址保持不变,一般情况下我们就不再需要去维护DNS的数据文件了。 不过在确认域名解释正常之前我们最好是测试一下所有的配置是否正常。许多人会简单地使用ping命令检查一下就算了。不过Ping指令只是一个检查网络连通情况的命令,虽然在输入的参数是域名的情况下会通过DNS进行查询,但是它只能查询A类型和CNAME类型的记录,而且只会告诉你域名是否存在,其他的信息一概欠奉。 所以如果你需要对DNS的故障进行排错就必须熟练另一个更强大的工具nslookup。 nslookup命令的使用

Apache Thrift系列详解(二) - 网络服务模型

坚强是说给别人听的谎言 提交于 2020-01-08 12:24:39
前言 Thrift 提供的网络服务模型:单线程、多线程、事件驱动,从另一个角度划分为:阻塞服务模型、非阻塞服务模型。 阻塞服务模型: TSimpleServer 、 TThreadPoolServer 。 非阻塞服务模型: TNonblockingServer 、 THsHaServer 和 TThreadedSelectorServer 。 TServer 类的层次关系: 正文 TServer TServer 定义了静态内部类 Args , Args 继承自抽象类 AbstractServerArgs 。 AbstractServerArgs 采用了建造者模式,向 TServer 提供各种工厂: 工厂属性 工厂类型 作用 ProcessorFactory TProcessorFactory 处理层工厂类,用于具体的TProcessor对象的创建 InputTransportFactory TTransportFactory 传输层输入工厂类,用于具体的TTransport对象的创建 OutputTransportFactory TTransportFactory 传输层输出工厂类,用于具体的TTransport对象的创建 InputProtocolFactory TProtocolFactory 协议层输入工厂类,用于具体的TProtocol对象的创建

网卡的组成工作原理

半世苍凉 提交于 2020-01-08 00:14:07
1.认识网卡,我们上网必备组件之一。 网卡工作在osi的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网卡的这两个部分是做到一起的。他们之间的关系是pci总线接mac总线,mac接phy,phy接网线(当然也不是直接接上的,还有一个变压装置)。 下面继续让我们来关心一下PHY和MAC之间是如何传送数据和相互沟通的。通过IEEE定义的标准的MII/GigaMII(Media Independed Interfade,介质独立界面)界面连接MAC和PHY。这个界面是IEEE定义的。MII界面传递了网络的所有数据和数据的控制。 而MAC对PHY的工作状态的确定和对PHY的控制则是使用SMI(Serial Management Interface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器也是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的