首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TCP协议发送接收数据简单实现

背景 Demo 基于 Java 实现简单的 TCP 传输 / 接收协议 词义百科 TCP 协议 (传输控制协议) TCP 协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,再传输数据...在 TCP 连接中必须要明确客户端与服务器,由客户端向服务器发送连接请求,每次连接的创建都需要经过 “三次握手” 三次握手:TCP 协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠...第一次握手:客户端向服务器发出连接请求,等待服务器确认 第二次握手:服务器向客户端回送一个响应,通知客户端收到连接请求 第三次握手:客户端再次向服务器发送确认信息,确认连接 完成三次握手,连接建立后,...TCP 协议可以保证传输数据的安全,所以应用十分广泛,比如:文件上传、文件下载、浏览页面 三次握手示意图 四次挥手示意图 发送端 Demo package tcp; import java.io....*; import java.net.InetAddress; import java.net.Socket; /** * TCP 发送数据步骤 * 1.创建客户端socket对象 * 2.获取输出流

1.3K50

协议森林11 涅槃 (TCP重新发送)

TCP协议是一个可靠的协议。它通过重新发送(retransmission)来实现TCP片段传输的可靠性。简单的说,TCP会不断重复发送TCP片段,直到片段被正确接收。...RTT: 往返时间 TCP协议通过统计RTT,来决定合理的RTO。...TCP协议有可能在计时完成之前启动重新发送,也就是利用快速重新发送(fast-retransmission)。快速发送机制如果被启动,将打断计时器的等待,直接重新发送TCP片段。...补上空洞 TCP协议规定,当接收方收到乱序片段的时候,需要重复发送ACK。比如接收到乱序片段9的时候,接收方需要回复ACK。回复号为8 (7+1)。...而TCP协议利用重新发送(retransmission)来实现TCP传输的可靠性。重新发送的基本形式是超时重新发送,根据统计的往返时间来设置超时标准;如果超时,则重新发送TCP片段。

82760
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java开发TCPIP协议:实现TCP单向裸数据发送

    前面我们花费大量篇幅完成了TCP协议各种细节的讲解,从中我们能体会到该协议的复杂和烦琐。...本节我们先实现一次单向数据传输,我们将开放一个基于TCP协议的客户端,使用TCP协议向服务器发送裸数据,它的基本结构如下图: ?...只要你能在另一台设备上运行可以接收TCP数据包的服务器程序都可以,我们的任务是在我们自己对TCP协议的实现基础上开发客户端,与它连接后,向它发送一个字符,然后端口连接,我们看看代码的实现。...在代码设计上我使用观察者模式,上层应用向TCP协议层调用相关接口后,TCP协议层以回调的方式通知上层应用,因此我们先添加接口定义: package utils; public interface ITCPHandler...同时前面实现的TCPThreeHandShakes将作为使用TCP协议的中间层,由它负责调用TCP协议封包层来发送和接收数据,为此我对其做了一些修改: public class TCPThreeHandShakes

    1.1K20

    UDP协议支持广播发送数据_tcp协议建立连接的过程

    之前和大家分享了使用TCP协议进行网络通信的过程,想了解的小伙伴可以看我的这篇文章《Java利用TCP协议实现客户端与服务器通信》,今天来和大家分享一下在Java网络编程开发中,使用UDP协议进行网络通信...UDP(即用户数据报协议)它是除了TCP协议以外的另一种网络信息传输的形式,我们知道TCP和UDP协议的不同点在于: TCP协议是可靠而非安全的网络协议,它可以保证数据在从一端传输至另一端的时候可以准确的送达...UDP协议的安全而非可靠的网络协议,基于UDP的信息传输快,但是不提供可靠的保证, 使用UDP协议进行数据传输时,用户无法知道数据能否到达主机,也不能确保到达目的地的顺序是否和发送的顺序相同,它就像是像一个广播站一样...第二种构造函数用于发送数据包,它不仅指定了数据包的内存空间和大小,还指定了数据包的目标地址和端口,在发送数据时必须指定接收方的Socket地址和端口号,使用第二种构造函数可以创建发送数据的DatagramPacket...UDP协议网络通信客户端服务器程序 了解了UDP协议的基本通讯原理之后,就是UDP程序的编写过程了,我们以一个不断发送天气情况的程序为例,在服务器端不断发送天气情况,客户端通过接收窗口进行接收,并且实时显示接收到的信息

    1.7K10

    详解TCP协议数据发送中需要关注的细节

    TCP数据传输一个特点是,协议层在发送数据时不会关心数据形成的逻辑结构,不管上层协议如何组织数据,一旦数据抵达TCP协议层后,他们只会被当做数据流对待。...TCP协议层在接收到上层协议传来数据时,它会将数据缓存在内存中,等到合适时机在选取一部分数据发送出去。...为了让TCP实现数据直接发送而不积攒,在TCP包中设置了PSH控制位,当我们把该位设置成1时,数据一旦传到TCP层就会被立即发送出去,这就是所谓TCP协议的“PUSH"功能。...TCP协议层的基本处理方法是,当一方发送出数据包时就启动一个定时器,当定时器时间片用完后还没有收到对应的ACK包,数据就会重新发送。...TCP协议有太多的细节需要考虑。前面说到数据包一旦发送后,数据会存放在重传队列中,然后启动时钟在超时后将数据包再次发送

    94020

    TCP协议

    1、TCP协议的特点 TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复的问题。...TCPTCP/IP体系中非常复杂的一个协议,主要特点有: 1)TCP是面向连接的传输层协议。 2)每一条TCP连接有两个端点,每一条TCP连接只能是点对点的(一对一)。...TCP允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都有发送缓存和接受缓存,用来临时存放双向通信的数据。...发送缓存用来暂时存放以下数据: ①发送应用程序传送给发送TCP准备发送的数据; ②TCP发送出但尚未收到确认的数据 接收缓存用来存放以下数据: ①按时到达的但尚未被接受应用程序读取的数据。...5)TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。 2、TCP连接管理 TCP是面向连接的协议

    79110

    TCP协议

    什么是TCP协议 TCP(transmission control protocol)协议全称传输控制协议。它是TCP/IP协议簇中一个非常重要的协议,它工作在IP协议层之上,应用层下面。...TCP服务的特点(为什么需要TCP协议) •使用TCP进行通信,在传输数据前需要建立连接,连接建立成功之后才能输出数据。建立连接的两端分配内核资源,像端口号,socket描述符。...•TCP传输是可靠的,采用了ACK机制。发送发送的每个报文段都必须得到接收方的应答确认,才视为该报文段发送成功。还采用了重传机制,对未收到ACK的报文段进行重传。...TCP协议报文结构 •端口号,分为源端口号和目的端口号,分别占用16bit。源端口号标识报文发送方端口地址,目的端口号标识报文接收方端口地址。...,通信双方使用该字段选项协商最大报文段长度MSS(max segment size),在TCP协议中将MSS设置为(MTU-40)个字节。

    1K11

    TCP协议

    1、TCP协议的特点 TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复的问题。...TCPTCP/IP体系中非常复杂的一个协议,主要特点有: 1)TCP是面向连接的传输层协议。 2)每一条TCP连接有两个端点,每一条TCP连接只能是点对点的(一对一)。...TCP允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都有发送缓存和接受缓存,用来临时存放双向通信的数据。...发送缓存用来暂时存放以下数据: ①发送应用程序传送给发送TCP准备发送的数据; ②TCP发送出但尚未收到确认的数据 接收缓存用来存放以下数据: ①按时到达的但尚未被接受应用程序读取的数据。...5)TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。 2、TCP连接管理 TCP是面向连接的协议

    54610

    TCP 协议

    TCP是一种面向连接、可靠的传输方式。 超时重传 TCP层每发送一个数据包,都要设置一个定时器,如果接收方在有效时间内没有返回数据接收的确认ACK,发送方则重新发送这个数据包。...TCP三次握手 主机A向主机B发送连接请求 主机B向主机发送ACK确认 主机A建立连接,向主机B发送ACK确认;主机B收到ACK确认,建立连接 为什么要三次握手?...TCP四次挥手 主机A在发送完数据后,向主机B发送关闭连接的请求FIN,之后处于半关闭状态,不再发送任何数据,但可以接收数据 主机B在接收完数据后,处理关闭连接的请求,返回FIN同意关闭。...在此之前,可能也向主机A发送了一些数据;在此之后,也处于半关闭状态,不再发送新的数据。...TCP四次挥手主要是为了保证连接关闭前的数据能够稳定地进行传输。 为什么要四次挥手?

    51120

    TCP协议和UDP协议

    (注:本文部分摘自《计算机网络 谢希仁》) 目录 1.传输控制协议TCP 1.1TCP的主要特点: 1.1.1面向连接的运输层协议 1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的...(一对一) 1.1.3TCP提供可靠交付的服务 1.1.4TCP提供全双工通信 1.1.5面向字节流 1.2与TCP有关的面试问题 2.用户数据报协议UDP 2.1UDP协议的主要特点: ---- 1....传输控制协议TCP 1.1TCP的主要特点: 1.1.1面向连接的运输层协议 (1)TCP的连接 TCP的许多特性都与TCP是面向连接的这个基本特性有关,因此要对TCP的连接有更清楚的了解。...,每一条TCP链接只能是点对点的(一对一) 1.1.3TCP提供可靠交付的服务 (1)可靠传输的工作原理 ①停止等待协议: “停止等待”就是每发送完一个分组就停止发送,等待对方确认。...②连续的ARQ协议 连续ARQ协议规定:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

    1.2K20

    TCP 协议简介

    来源:阮一峰的网络日志 作者:阮一峰 TCP 是互联网核心协议之一,本文介绍它的基础知识。 ? 一、TCP 协议的作用 互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。 ?...(图片说明:TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。)...如果路由器丢包(比如缓存满了,新进来的数据包就会丢失),就需要发现丢了哪一个包,以及如何重新发送这个包。这就要依靠 TCP 协议。...比如,一个 10MB 的文件,需要发送7100多个包。 发送的时候,TCP 协议为每个包编号(sequence number,简称 SEQ),以便接收的一方按照顺序还原。...TCP 协议为了做到效率与可靠性的统一,设计了一个慢启动(slow start)机制。开始的时候,发送得较慢,然后根据丢包的情况,调整速率:如果不丢包,就加快发送速度;如果丢包,就降低发送速度。

    46500

    TCP协议详解

    后来呢,我们都慢慢长大,了解了社会的残酷,变得复杂而成熟,就像TCP协议一样。它之所以这么复杂,那是因为它秉承的是“性恶论”。...TCP是靠谱的协议,但不代表它所处的网络环境很好。 IP层来看,如果网络状况的确差,无任何可靠性保证,即使是IP的上一层TCP也无能为力,能做的只是更努力,不断重传,通过各种算法尽量保证。...TCP协议专门设计了几个状态来处理这些问题。...TCP协议里面并没有对这个状态的处理,但Linux有,可以调整tcp_fin_timeout参数,设置一个超时时间。...因为TCP报文基于是IP协议的,而IP头中有一个TTL域,是IP数据报可以经过的最大路由数,每经过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。

    36710

    TCP协议概述

    TCP 协议概述 1.TCP提供一种面向连接的、可靠的字节流服务。 2.两个应用程序通过TCP连接交换8bit字节构成的字节流。...4.一个IP地址和一个端口号也称为一个插口(socket),出现在最早的TCP规范(RFC793) TCP 保证可靠性: 1.应用数据被分割成 TCP 认为最适合发送的数据块 2.当 TCP 发出一个段后...,它启动一个定时器,等待目的端确认收到这个报文段,超时重发 3.当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认 4.TCP 将保持它首部和数据的检验和 5.如果必要, TCP 将对收到的数据进行重新排序...6.TCP 还能提供流量控制 TCP是一个面向连接的协议。...syn=1, 产生随机seq=1784777886 第二次握手:B发送 随机产生seq=1181145550,ack=接收到的seq+1 1784777887 第三次握手:A发送 ack=1, TCP首部标志位

    42920

    TCP协议详解

    TCP服务的特点 传输层协议主要有两个: TCP协议和UDP协议TCP协议相对于UDP协议的特点是:面向连接、字节流和可靠传输。 使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。...TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务。而无连接协议UDP则非常适合于广播和多播。...TCP传输是可靠的。首先,TCP 协议采用发送应答机制,即发送发送的每个TCP报文段都必须得到接收方的应答,才认为这个TCP报文段传输成功。...其次,TCP协议采用超时重传机制,发送端在发送出一个TCP报文段之后启动定时器,如果在定时时间内未收到应答,它将重发该报文段。...最后,因为TCP报文段最终是以IP数据报发送的,而IP数据报到达接收端可能乱序、重复,所以TCP协议还会对接收到的TCP报文段重排、整理,再交付给应用层。.UDP协议则和IP协议一样,提供不可靠服务。

    62610

    TCP协议(下)

    loss,delay等网络行为判断是否发生拥塞 TCP采取这种方法 网络辅助的拥塞控制 路由器向发送方显示地反馈网络拥塞信息 简单的拥塞指示(1bit) : SNA,DECbit,TCP/IP ECN...如果发送发送路径拥塞,将发送速率降到最低保障速率 RM(Resource Management) cells 发送发送 交换机设置RM cell 位(网络辅助) NI bit :.../2,CongWin设置为1 MSS 拥塞控制算法 例题 TCP性能分析 TCP throghput : 吞吐率 给定拥塞窗口大小和RTT,TCP的平均吞吐率是多少?...TCP的公平性 TCP协议具备公平性 如果 K 个TCP Session共享相同的瓶颈带宽 R,那么每个Session的平均速率 为R/K 公平性与UDP 多媒体应用通常不使用TCP,...以免被拥塞控制机制限制速率 使用UDP:以恒定速率发送, 能够容忍丢失 产生了不公平 研究:TCP friendly ** 公平性与并发TCP连接 ** ** **某些应用会打开多个并发连接

    15910

    TCP 协议详解

    参考网址: 《TCP 协议详解》 《简析TCP的三次握手与四次分手》 《TCP协议中的三次握手和四次挥手(图解)》 《TCP通信的三次握手和四次撒手的详细流程(顿悟) 》 《TCP建立连接的三次握手...因而他们需要定义一些共通的东西来进行交流,TCP / IP 就是为此而生。 TCP / IP 不是一个协议,而是一个协议族的统称。...TCP / IP 协议按照层次由上到下,层层包装。...注:UDP 和 TCP 很相似,当时更简单,同时可靠性低于 TCP。 # 四、TCP 报文格式 TCP 是一个协议,那这个协议是如何定义的,它的数据格式是什么样子的呢?...三次握手详解 TCP 是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在 TCP / IP 协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。

    1.8K50

    TCP协议笔记

    TCP两端同时打开: TCP两端同时关闭: TCP交互式输入:1.客户端发送一个字符数据。2.服务端发送ack确认。3.服务端发送一个字符数据。4.客户端发送确认。然后重复以上过程。...TCP协议会将其余的报文进行拼装成一个报文(分组),在上一个分组确认到来后,会将此分组发送。该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快。...在对实时性要求高的场景必须关闭Nagle算法,比如进程间使用TCP协议进行通信。 TCP滑动窗口协议:T F T P使用了停止等待协议。数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认。...滑动窗口协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。...LWIP协议TCP报文接收流程源码解析 一、TCP层第一个处理函数tcp_input      首先IP层将TCP报文段提交给tcp_input函数,tcp_input函数需要查找先查找已建立连接的

    64310

    TCP协议(上)

    概述 RFCs-793, 1122, 1323, 2018, 2581 TCP特点 点对点连接 一个发送方,一个接收方 可靠的,按序的字节流 TCP拥塞控制和流量控制机制 设置窗口尺寸...发送方/接收方缓存 全双工(full-duplex) 同一连接中能够传输双向数据流 面向连接 通信双方在发送数据之前必须建立连接 连接状态只在连接两端中维护,在沿途节点中并不维护状态...收到ACK 若确认此前未确认的Segment 更新SendBase 如果窗口中还有未确认的分组,重新启动定时器 TCP发送端程序 重传过程 ACK生成 : RFC 1122...TCP FIN 控制 segment step 2 : server 收到 FIN,回复ACK,关闭连接,发送FIN step 3 : client 收到FIN 回复ACK 进入"等待"-如果收到...FIN,会重新发送ACK step 4 : server收到ACK,连接关闭 TCP协议客户端与服务端连接生命周期 TCP拥塞控制 未完待续…

    17910

    TCP协议详解

    传输控制协议 TCP 概述 TCP 最主要的特点 TCP 是面向连接的运输层协议。应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。...接收方不需要请求发送方重传某个出错的分组 信道利用率 停止等待协议的优点是简单,但缺点是信道利用率太低 [TCP协议-图4] 为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输。...这种传输方式可以获得很高的信道利用率 [TCP协议-图5] 连续 ARQ 协议 位于发送窗口内的5个分组都可以连续发送出去,而不需要等待对方的确认。...如果 A 收到确认号落在发送窗口内,那么 A 就可以发送窗口继续向前滑动,并发送新的数据 [TCP协议-图11] 缓存和窗口 发送方维持的发送缓存和发送窗口,以及接收方维持的接收缓存和接收窗口 [TCP...协议-图12] 发送缓存用来暂时存放: 发送应用程序传送给对方 TCP 准备发送的数据 TCP发送出但尚未收到确认的数据 已被确认的数据应当从发送缓存中删除,因此发送缓存和发送窗口的后沿是重合的。

    1.3K50

    TCP协议详解

    概述 TCP(Transmission Control Protocol)传输控制协议 和UDP结构类似,由TCP首部和TCP数据报数据组成: 特点: TCP是面向连接的协议 TCP的一个连接有两端...TCP提供可靠的传输服务 TCP提供全双工的通信 TCP是面向字节流的协议(对应用层数据报合并或分拆) TCP协议头部,固定20个字节,UDP头部只有8个字节,IP协议头部20个字节: 序号: 0~...TCP选项: 最多40字节(60-20) 支持未来的拓展 可靠传输的基本原理 停止等待协议发送方等待接收方的确认消息,才发送新的信息 最简单的可靠传输协议 通过超时重传保证可靠传输 对信道的利用效率不高...如收到了5的确认消息,则认为1-5的消息都已经收到了,就把滑动窗口往前移动5格: TCP协议的可靠传输 1. TCP的可靠传输基于连续ARQ协议 2....特有的功能(UDP和其他协议没有) 2. 流量控制指让发送发送速率不要太快 3.

    57640
    领券