![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
网络编程
文章平均质量分 86
网格相关
huangshanchun
机会比实力重要,实力不够的时候,肯定会流失机会。
展开
-
动手学习TCP下
如下图所示:ssthresh值为8,慢启动过程当cwnd增长到8时候开始出现丢包,新的ssthresh调整为4,从新开始慢启动,第五次发送cwnd窗口达到ssthresh阈值,开始进入线性增长。不足是在大量丢包情况效率比较低。慢启动思路:TCP刚建立连接完成后,有个慢启动过程,就是在不清楚当前网络繁忙情况时候,慢慢的发送,当确定没有丢包时候,快速增加拥塞窗口。当出现丢包时候,重新执行慢启动,拥塞窗口大幅度下降,发送数据也会大幅度下降,当丢包不是很严重时候,还可以采用快速重传与快速恢复。原创 2023-05-13 16:52:45 · 120 阅读 · 0 评论 -
动手学习TCP中
在不考重传的情况下会比较简单,发送方记录对应序列号的,等到ack响应报文回来时候直接减发送的时间即可,在有重传情况下,按照这种计算方式就会有问题,如下图所示。如下图所示,是一个发送窗口的快照可以划分为四个部分。TCP是面向字节流的协议的,不限制应用层传输内容长度,但是实际上在网络层和数据链路层由于受到机器内存限制,因此必须限制内容长度,这就需要把应用层任意长度的字节流进行拆分。首先看下socket 应用层编程是怎么使用的,如下面代码所示,在应用层是直接发送的是一个比较大的字节流,应用层并没有考虑分段。原创 2022-09-25 20:20:21 · 957 阅读 · 1 评论 -
动手学习TCP上
1 TCP 历史及其设计哲学TCP/IP 的前身 ARPA:NCP 协议(没有遵循OSI分层概念),隶属美国国防部;有两个问题1)只是两台机器进行通信,没有IP概念2)没有网络容错能力。如下图所示TCP/IP发展历史,从下图也可以看到IPv4来历。由于TCP是源于ARPA网,所以TCP协议7个设计理念,很多为了解决ARPA网的问题:2 TCP 解决了哪些问题TCP: 面向连接的、可靠的、基于字节流的传输协议IP: 根据IP地址穿越网络传送数据TCP在IP协议之上,解决网络通讯可依赖问题,原创 2022-05-29 10:57:01 · 366 阅读 · 0 评论 -
URL、URN、URI 三者之间区别和联系
0 基本概念URL(Uniform Resource Locator)统一资源定位符,表示的是资源位置,期望提欧共资源查找方法。如浏览器重使用的URLURI(Uniform Resource Identifier)统一资源标识符,用于区分资源,是URL和URN超集合,用于取代URL和URN。URN(Uniform Resource Name)是统一资源标识(URI)的历史名字。期望为资源提供持久的、位置无关的标识方式,并允许简单地将多个命名映射到单个URN命名空间。例如磁力链接:magnet:?xt=原创 2022-03-27 17:11:35 · 737 阅读 · 0 评论 -
动手学习HTTP协议上
1.浏览器发起http请求场景当我在浏览器中输入,www.t时候,浏览器会自动联想到www.taobao.com,主要是因为之前历史访问过,浏览器引擎会把这个数记录并存储到本地,当再次访问时候就能给出相应提示,如果下图所示。下图给出浏览器,从打开url到渲染出页面的过程。2.浏览器发起http请求的时序图3.http 协议定义和特点The Hypertext Transfer Protocol (HTTP) is a stateless application-level request/r原创 2021-12-13 22:08:43 · 1598 阅读 · 0 评论 -
netty 实现https服务器
0 概述netty 通过JDK的SSLEngine,以SslHandler的方式提供对SSL/TLS 安全传输的支持,极大的简化了开发工作。本文主要讲述如何使用netty实现简单的https服务器。1 SSL单向认证所谓的单向认证,即客户端只验证服务端的合法性,服务端不会验证客户端。 单向认证过程的总结如下: 1.SSL客户端(浏览器)向服务端传送客户端 SSL协议的版本号、支...原创 2017-10-21 20:08:07 · 10369 阅读 · 5 评论 -
netty实现http服务器
0 概述HTTP(超文本传输协议)是建立在TCP传输协议之上的应用层协议,由于其简单、灵活,其应用也非常之广泛。本文主要讲解如何用Netty 实现一个简单的http服务器。1 http 请求消息Http的请求由三部分组成:请求行、消息头、请求正文(body)。 请求行以一个方法开头,以空格分开,后面跟着请求URI和协议版本,格式为:Method(方法) Request-URI (原创 2017-10-21 12:08:26 · 7221 阅读 · 0 评论 -
分割符和定长解码
0 概述TCP以流的方式进行数据传输,上层的应用协议为了对消息进行区分,往往采用以下四种方式消息的长度固定,累计读取到长度总和为定长的len的报文之后,都认为读取到了一个完整的消息。将回车换行符作为消息的结束符,例如FTP协议,这种方式在文本协议中应用的比较广泛。将特殊的分隔符作为消息的结束标志,回车换行符本身就是一种特殊的符号。通过在消息头中定义长度字段来标识消息的总长度。原创 2017-10-19 23:23:48 · 574 阅读 · 0 评论 -
TCP粘包与拆包问题
0 概述熟悉TCP编程的读者可能都知道,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP粘包与拆包问题机制。1 TCP粘包与拆包问题TCP是个”流协议”,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在上层业务认为,一个完整的包可能被TCP拆分成多个包进行发送,也可能把多个小的包封装成一个大包发送,这就是T原创 2017-10-08 16:42:25 · 423 阅读 · 0 评论 -
netty 入门案例hello world
netty 学习之 hello world原创 2017-02-26 15:38:45 · 1841 阅读 · 0 评论 -
FileChannel
0 概述Channel相关基础知识可以参考Channel的基础。Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。FileChannel对象是线程安全的。原创 2017-02-14 13:22:30 · 1298 阅读 · 0 评论 -
ServerSocket和ServerSocketChannel实例
1.传统Socket单线程只能处理一个连接,要处理多个连接需要借助线程或者线程池,但是这样比较消耗资源。2.java nio 借鉴了Linux下select、poll、epoll模型;其性能有很大的提高。原创 2017-02-19 21:02:42 · 3391 阅读 · 0 评论 -
缓冲区
1相关概念1.1 引入在jdk1.4提供了新的io包,引入了Buffer类(缓冲区)。从概念上来讲,缓冲区是包在一个对象内的基本数据元素数组。Buffer类相比一个简单的数组的优点是它将关于数据的内容和信息包含在一个单一的对象中。Buffer类以及它专有的子类定义了一个用于处理数据缓冲区的API。1.2 Buffer一个Buffer是固定数量的数据容器。对于每个非布尔类型的原始数据都有一个缓冲区类。原创 2017-01-14 17:01:27 · 1161 阅读 · 0 评论 -
java channel
通道(channel)是java nio 的第二个主要创新。它们既不是一个扩展也不是一项增强,而是全新、极好的java I/O 示例,提供与I/O服务直接连接,Channel类提供了维持平台独立性所需要的抽象过程。多数情况下,通道与操作系统的文件描述(fd)或者文件句柄有着一对一的关系。 1.通道的基础1.1Channel 接口public interface Channel extends Cl原创 2017-02-05 16:14:38 · 644 阅读 · 0 评论 -
IO 模型
1.相关概念 1.1阻塞和非阻塞:阻塞和非阻塞在访问数据时候,数据内是否准备就绪的一种处理方式,当数据没有准备的时候。阻塞:需要等待缓冲区准备好后才处理其他事情,否则一直等待。非阻塞:当我们进程访问我们的数据缓冲区时候,数据没有准备好的时候,直接返回,不需要等待数据。 1.2同步和异步:同步和异步都是基于应用程序和操作系统处理I/O时间锁采用的方式,比如同步应用程序要直接参与I/O原创 2017-01-14 10:45:19 · 468 阅读 · 0 评论