TCP及UDP协议 TCP/IP协议族 七层网络模型及其对应的TCP/IP协议
转载 2023-07-20 17:35:50
64阅读
1.socket在进行网络编程前,我们需要了解socket。我们知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层。 TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP协议是应用层协议,主要解决如何包装数据。那么socket是啥呢?首先呢,socket就是网络通信的工具,任何一门语言都有socket,他不是任何一个语言的专有名词,而是大家通过自己的程序
转载 2024-02-22 10:14:58
48阅读
无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制。TCP粘包/拆包发生的根本原因【流式协议,消息无边界】粘包主要原因发送方每次写入数据 < 套接字缓冲区大小接收方读取套接字缓冲区数据不够及时半包的主要原因:发送方写入数据 > 套接字缓冲区大小发送的数据大于协议的 MTU(Maximum Transmission Unit,最大传输单元),必须拆
转载 2024-10-14 09:39:31
325阅读
TCP粘包/分包问题的由来因为TCP是以流的方式来处理数据,一个完整的包可能会被TCP拆分成多个包进行发送,也可能把小的封装成一个大的数据包发送。这样说可能比较抽象,下面举例来说明TCP拆包/粘包问题!图解:如果客户端分别发送两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是不确定的,可能会出现四种情况。(1)服务端分别读取到D1和D2,没有产生粘包和拆包的情况,如下图:(2)服务端一次
转载 2023-08-19 10:25:30
220阅读
分布式、消息队列,中间件的大趋势需要我们对网络编程的理解更加的深厚。那么我们知道如果需要实现在网络上的通讯那么肯定需要连接然后发送数据。那么我们在需要访问服务器的时候是通过ip地址加端口号来进行访问的,如果使用的是域名来进行访问的话是通过DNS来解析域名实现连接。而在程序中socket使用的协议分为TCP和UDP协议。 TCP协议:面向连接的协议,可靠的协议,需要三次握手才可以通讯(在HTTP底层
转载 2023-09-22 19:08:42
986阅读
震惊!这可能是我与底层最接近的一次编程体验1.netty能做什么首先netty是一款高性能、封装性良好且灵活、基于NIO(真·非阻塞IO)的开源框架。可以用来手写web服务器、TCP服务器等,支持的协议丰富,如:常用的HTTP/HTTPS/WEBSOCKET,并且提供的大量的方法,十分灵活,可以根据自己的需求量身DIV一款服务器。 用netty编写TCP的服务器/客户端 1.可以自己设计数据传输协
转载 2024-07-04 05:36:54
1498阅读
文章目录Netty接收请求源码剖析一、监听accept事件,接受连接 & 创建一个NioSocketChannel1、Debug processSelectedKeys()2、doReadMessages(List\<Object\> buf)二、将NioSocketChannel注册到workerGroup1、ServerBootstrapAcceptor.channelR
NettyTCP_NODELAY选项来自社群小伙伴的交流总目录 博客园版 为您奉上更多の珍贵的学习资源有关本文的 脚本 和 代码,可以来 尼恩 发起的Java 高并发 疯狂创客圈 社群 交流和获取。NettyTCP选项的配置DefaultSocketChannelConfig@SuppressWarnings("unchecked") @Override public <
转载 2023-11-24 17:44:19
227阅读
一、TCP粘包和拆包解决方案1、使用自定义协议 + 编解码器,来解决。 2、关键就是要解决,服务器端每次读取数据长度的问题。这个问题解决,就不会出现服务器多读或少读数据的问题,从而避免TCP粘包、拆包。二、具体示例1、要求客户端发送5个message对象,客户端每次发送一个message对象。 2、服务器端每次接收一个message,分5次进行解码,每读取到一个message,会回复一个messa
转载 2023-07-16 14:38:36
151阅读
一、基本介绍1、TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的。2、由于TCP无消息保护
转载 2023-08-19 10:25:40
94阅读
# 实现Java TCP字节通信的步骤 ## 导言 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。在Java中,我们可以使用Socket类来实现TCP字节通信。本文将指导你如何在Java中实现TCP字节通信,并提供详细的代码示例和解释。 ## 步骤概览 为了更好地理解整个过程,我们首先给出整件事情的流程概览,
原创 2023-08-04 09:11:08
73阅读
TCP通信的客户端:向服务器发送链接请求,给服务器发送数据,读取服务器返回的数据 表示客户端的类: java.net.Socket:此类实现了客户端套接字。套接字就是两台机器间通信的端点。 构造方法: Socket(String host,int port):创建一个流套接字并将其链接到一个指定的主机上的指定端口号。 参数: String host:服务器主机的名称/服务器的IP地址。
转载 2023-08-19 10:21:25
54阅读
文章目录HTTP&HTTPS1、Http和Https的区别?2、什么是对称加密与非对称加密3、客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?4、GET 与 POST 的区别?5、什么是 HTTP 协议无状态协议?怎么解决Http协议无状态协议?6、Session、Cookie 与 Application7、常用的HTTP方法有哪
转载 8月前
22阅读
概述TCP (Transmission Control Protocol):传输控制协议 UDP(User Datagram Protocol):用户数据报协议TCP 与 UDP 都是 运输层(Transport Layer)上的因特网协议,运输层协议的功能就是为运行在不同主机上的应用进程之间提供 逻辑通信 ,使得运行不同进程的主机即使分隔于地球两侧,也能像是直接相连一样。 而具体做法是,它为
转载 2023-08-23 23:01:16
85阅读
# Java Netty TCP框架科普 ## 导言 在网络通信领域,快速、高效的传输是至关重要的。Java Netty TCP框架就是为了实现这个目的而设计的。本文将介绍Java Netty TCP框架的基本概念、使用方法以及代码示例。 ## 什么是Java Netty TCP框架? Java Netty是一个基于NIO的客户端/服务器框架,用于快速开发可伸缩的网络应用程序。它是一个高性
原创 2024-01-15 08:06:17
55阅读
解决粘包和拆包问题:        发送端需要使用tcp_nodelay来关闭nagle算法,有数据就发送;        接收端,需要在应用层来解决问题,可用的方式:                固定消息长度,比如不足的位数补空格,接收
转载 2024-09-26 14:24:45
53阅读
## 如何实现Java Netty TCP分包 作为一名经验丰富的开发者,我将向你介绍如何在Java中使用Netty实现TCP分包的功能。在这个过程中,我将分步指导你完成这一任务。首先,我将展示整个流程的步骤,然后详细说明每一步需要做什么,包括需要使用的代码以及代码注释。 ### TCP分包流程表格 | 步骤 | 操作 | | ---- | ---- | | 1 | 创建Netty S
原创 2024-04-16 05:47:24
69阅读
# 基于 JavaNetty 实现 Modbus TCP 通讯 ## 引言 Modbus 是一种通信协议,广泛应用于工业自动化领域,尤其是在 PLC 和其他设备之间的通讯。Modbus TCP 是对 Modbus 的一种扩展,允许通过以太网进行通讯。为了实现高效的网络通信,Java 开发者常常利用 Netty,这是一个异步事件驱动的网络应用框架。在这篇文章中,我们将探讨如何使用 Java
原创 2024-10-25 05:56:11
127阅读
文章目录Netty简介NIOEvent事件线程模型Pipeline模型零拷贝与ByteBuf示例Java NIO服务端Netty服务端Netty客户端 Netty是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。 Netty简介NIONIO(Non Blocking IO):非阻塞IO;是Java1.4中引入的。提供了SocketChannel和S
上一章节主要介绍了netty的自带编解码使用和如何使用自定义的编解码完成业务,今天将要介绍netty关于协议相关知识,主要内容如下:1 netty基于http协议的使用:完成文件目录浏览功能该场景不需要自己写客户端,只需要写服务端即可,然后通过http的get方法请求该服务端,服务端就会返回文件目录的层级解析和展示:直接看代码:服务端代码package http; import io.netty.
转载 2024-07-11 07:57:36
18阅读
  • 1
  • 2
  • 3
  • 4
  • 5