tcp四次挥手

Java学习:Java网络编程总结

本小妞迷上赌 提交于 2019-11-27 02:28:02
Java网络编程总结 一、概述 计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统。网络编程就就是编写程序使联网的两个(或多个)设备(例如计算机)之间进行数据传输。 Java语言对网络编程提供了良好的支持 ,通过其提供的接口我们可以很方便地进行网络编程。下面先对网络编程的一些基础知识进行介绍,最后给出使用Java语言进行网络编程的实例。 二、计算机网络 计算机网络 20世纪60年代出现,经历了20世纪70年代、80年代和90年代的发展,进入21世纪后,计算机网络已经成为信息社会的基础设施,深入到人类社会的方方面面,与人们的工作、学习和生活息息相关。 网络协议 如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间能够进行相互通信是因为它们都共同遵守一定的规则, 即网络协议。 网络体系结构 计算机网络是个复杂的系统,按照人们解决复杂问题的方法,把计算机网络实现的功能分到不同的层次上,层与层之间用接口连接。通信的双方具有相同的层次,层次实现的功能由协议数据单元(PDU)来描述。不同系统中的同一层构成对等层,对等层之间通过对等层协议进行通信,理解彼此定义好的规则和约定。 计算机网络体系结构是计算机网络层次和协议的集合,网络体系结构对计算机网络实现的功能,以及网络协议、层次、接口和服务进行了描述,但并不涉及具体的实现

HTTP详解总结

孤人 提交于 2019-11-27 01:24:30
文章主要以一次HTTP请求的整个过程来讲解:HTTP起源、TCP/IP协议、建立TCP连接、客户端请求、服务端响应、断开TCP连接。 一、HTTP协议的演进 Http(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面内容。 默认端口是80 。 1.HTTP 0.9版本 1991年 这个版本最初用来向客户端传输HTML页面的,所以只有一个GET命令,服务器返回客户端一个HTML页面,不能是其它格式。利用这个版本完全可以构建一个简单的静态网站了。 2.HTTP 1.0版本 1996年 1.0版本改变是比较大的,奠定了现在HTTP协议的基础,这个版本的协议不仅可以传输HTML的文本页面,还可以传输其它二进制文件,例如图片、视频。而且还增加了现在常用的POST和HEAD命令,请求消息和响应消息也不是单一的,规定了一些元数据字段,例如:字符集、编码、状态码等 3.HTTP 1.1版本 1997年 实际上是在1.0版本之后半年时间又发布了一个版本,这个版本在1.0版本的基础上更加完善了。这个版本增加了持久连接,就是说之前版本的协议一次请求就是一次TCP连接,请求完成后这个连接就关闭掉了。众所周知TCP协议是可靠的,建立连接需要3次握手,断开连接需要4次挥手

【TCP ZeroWindow】与【TCP window Full】

旧时模样 提交于 2019-11-27 00:42:56
1、作为接收方,有接收窗口,也就是接收缓冲区,win=xxx 告诉对方,我的接收窗口大小。 2、当我的接收窗口满了,也就是win=0,Wireshark显示【TCP ZeroWindow】,这个时候,对方不能再发送数据。 3、作为发送方,有发送窗口,发送窗口可以理解为,一口气可以发送多少数据。发送窗口不光要考虑对方的接收窗口,还要考虑网络情况,也就是拥塞窗口,等于它们的最小值。   发送窗口数据分为三类: 发送了已经被确认,发送了还没有被确认,待发送的数据   当待发送的数据为0,也就是发了出去,但是都没有确认,允许发送的大小为0,   也就是说,在途字节数等于对方的接收窗口,这个时候,Wireshark打上【TCP window Full】标记,表示我不能再发送数据了。 4、在途字节数,是站在发送者的角度,表示的概念是,我已经发了多少,减去对方最近的一次确认,确认了多少。   也就是 Seq + Len - Ack【最近的一次Ack】 5、正常情况下,后一个包的Seq = 前一个包的Seq+Len 6、正常情况下,对方的Ack = 我刚发的Seq+Len 7、但是,三次握手和四次挥手是例外,syn和fin标志,Len是0,但是序号都加1,因为为了保证可靠性。ack标志,序号不加1,否则变成了死循环,我的ack你确认,你的ack我再确认,无法完成挥手。 转载于:https:/

对于tcp和udp的我的理解

孤街醉人 提交于 2019-11-27 00:31:22
TCP是传输控制协议,是面向连接的服务,安全,传输速度较慢 安全体现在它的三次握手四次挥手以及响应和重传。 三次握手用通俗易懂的方式来讲即: A ->B(A向B发了一句:你好,在吗)(其效果是让B知道A能到B) A<-B(B向A发送:你好,我在,你听得到吗)(其效果是让A知道了A能到B,B也能到A) A->B(A向B发送:我听的到)(其效果是让B知道B也能到A) 这里为什么不能是两次或者四次呢? 我们要知道这三次让双方都知道了双方都能接受到对方的消息,两次不能让B知道自己是否能到A四次则太多余浪费资源。 四次握手 我们也用通俗的方法来解释即 A->B(发送关闭请求)(我要关闭了,你准备好了吗?) B->A(发送响应请求)(我下去看一下我有没有好你等我一下)(B查看自己有无未发送完毕的信息) B->A(我好了,你关闭吧) A->B(好,我关闭了) 四次挥手主要是为了解决关于信息未发送完毕的情况。 DUP是数据报文协议,是面向无连接服务,相对于TCP来说传输速度较快,不保证安全,可靠,但大多数情况下安全 TCP主要用于安全性要求较高的场景:FTP,SMTP,HTTP DUP用于流媒体,在线的视频,音频。 来源: https://www.cnblogs.com/Maoey/p/11336635.html

【网络编程】 -- 2019-08-11 18:14:44

随声附和 提交于 2019-11-27 00:00:02
原文: http://106.13.73.98/__/1/ 目录 1.socket层 2.理解socket 3.套接字的发展史 4.网络基础 5.socket基本操作 6.socket进阶 7.黏包 8.解决黏包 8.socket的更多方法 1.socket层 ![在这里插入图片描述](http://106.13.73.98/media/ai/2019-03/5ccf086a-baa7-4268-a9f9-a50fb74136b7.png) 2.理解socket socket是应用层与TCP/IP协议族的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个面膜,它把复杂的TCP/IP协议族隐藏在socket接口后面,对于用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。 3.套接字的发展史 套接字起源于20世纪70年代 加利福尼亚 大学伯克利分校版本的Unix,即人们所说的BSD Unix。因此,有时人们也把套接字称为“伯克利套接字”或“BSD套接字”。一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯,这也被称为进程间通讯或IPC。套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。 基于文件类型的套接字家族:AF_UNIX unix下一切皆文件,基于文件的套接字调用的就是底层的文件系统来获取数据

TCP 三次握手和四次挥手详解

徘徊边缘 提交于 2019-11-26 23:31:48
1. TCP 报文格式详解 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (1). 源端口和目的端口字段——各占 2 字节,标识了发送方和接收方的应用进程,如2210,80端口 (2). 序号字段——占 4 字节,TCP 连接中传送的数据流中的每一个字节都编上一个序号,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号 (3). 确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号 (4). 数据偏移(4位首部长度)——占4bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远 (5). 保留字段——占6bit,保留为今后使用,但目前应置为 0 (6). 紧急比特 URG —— 当URG 为1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据) (7). 确认比特 ACK —— 只有当 ACK为 1 时确认号字段才有效,当 ACK为 0 时,确认号无效 (8). 推送比特 PSH (PuSH) —— 接收TCP收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付 (9). 复位比特 RST (ReSeT) —— 当 RST为 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接

传输层协议之TCP/UDP

∥☆過路亽.° 提交于 2019-11-26 22:51:38
1、UDP   UDP协议是面向无连接的,即不需要在正式传递数据前先链接双方,UDP协议只是 数据报文的搬运工 ,不保证有序且不丢失的传递到对端,且UDP协议无任何控制流量的算法,UDP相对于TCP更加轻便。   特征: 面向无连接 :在发送端,应用层将数据传递给传输层的UDP协议,UDP只会给数据增加一个UDP头标识下是UDP协议,然后就传递给网络层了;在接收端,网络层将数据传递给传输层,UDP只是去除IP报文头就传递给了应用层。 不可靠性 :UDP协议的不可靠性主要表现在以下几个方面: 无连接,想发就发 收什么数据就传什么数据且不会备份,也不会关新对端是否正确接收 无拥塞控制,一直会以恒定的速度发送数据,即使网络不好也不会调整速率,所以当网络不好时可能导致丢包 高效 :UDP头部开销小,只有8个字节。由两个16位的端口号[源端口(可选)+目标端口]+整个报文的长度和整个数据报文的校验+IPv4(可选)组成 传输方式 :单播(一对一)、多播(一对多)、广播(多对多) 适合使用场景 :实时性要求高的地方,如直播、王者荣耀等 2、TCP 1)头部 Sequence Number:这个序号保证了TCP传输的报文都是有序的,对端可以通过序号顺序拼接报文 Acknowledgement number:次序号表示数据接收端期望接受的下一字节编号是多少,同时也表示上一个序号的数据已到达

TCP协议详解及相关问题

你。 提交于 2019-11-26 20:15:59
TCP协议是什么: TCP是一种传输控制层的协议(TCP,Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。也就是要让连接的两端能够读懂相互发送数据的一种保障 TCP协议的主要特点: 1.面向连接的运输层协议,应用程序在使用tcp之前,必须建立tcp连接,在传输完成之后必须释放连接 2.点对点连接,一对一连接 3.tcp提供可靠交付的服务,通过TCP连接传输的数据,无差别,不丢失,不重复,按序到达 4.全双工通信,通信双方可以在任意时刻发送数据,TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据,在发送时,应用程序再把数据传送给TCP缓存后,就可以做自己的事情了,TCP在合适的时候把数据发送出去,在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据 5.面向字节流,TCP中的流指的是流入到进程或者从进程流出的字节序列,虽然应用程序和TCP交互的是大小不等的数据块,但是tcp只保证,发送方和接收方接到的字节流相同。 TCP的工作原理: 每一条PCT的连接都有两个端点,为套接字(socket)或者插口。端口号拼接ip地址构成套接字(IP地址:端口号) tcp传送的单元为报文段,报文段=首部(20+4N个字节)+数据 首部前二十个字节为固定的

基于TCP协议的socket套接字编程

倾然丶 夕夏残阳落幕 提交于 2019-11-26 19:57:56
基于TCP协议的socket套接字编程 一、什么是Scoket Scoket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。 所以,我们无需深入理解tc/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。 注意:也有人将scoket说成ip+port,ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的应用程序,ip地址是配置到网卡上的,而port是应用程序开启的,ip和port的绑定就标识了互联网独一无二的一个应用程序,而程序的pid是同一台机器上的不同进程或者线程的标识。 二、基于TCP协议的套接字编程(简单) 客户端 import socket client = socket.socket() # 拿电话 # 拨电话,指定服务器ip号和端口号 client.connect(('127.0.0.1',8080)) client.send(b'hello world!') # 通信发送信息 data = client.recv(1024) # 接收信息 print(data)

TCP/IP

不想你离开。 提交于 2019-11-26 19:23:05
一 计算机网络体系结构分层 OSI七层模型 TCP/IP概念层模型 功能 TCP/IP协议族 应用层 应用层 文件传输、电子邮件、文件服务、虚拟终端 TFTP、HTTP、SNMP、FTP、SMTP、DNS、TELNET 表示层 数据格式化、代码转换、数据加密 没有协议 会话层 解除或建立与别的节点的联系 没有协议 传输层 传输层 提供端对端的接口 TCP、UDP 网络层 网络层 为数据包选择路由 IP、ICMP、RIP、OSPF、BGP、IGMP 数据链路层 数据链路层 传输有地址的帧以及错误检测功能 PPP、ARP、MTU 物理层 物理层 以二进制数据形式在物理媒体上传输数据 IEEE802、IEEE802.2 二 TCP/IP 1.TCP/IP的具体含义 从字面意义上讲,有人可能会认为TCP/IP是指的TCP和IP两种协议。实际生活中有时确实是指这两种协议。然而很多情况下,它只是利用IP进行通信时所必须用到的协议群的统称。具体来说,IP或者ICMP、TCP或者UDP、TELNET或FTP以及HTTP等都属于TCP/IP协议。他们与TCP或者IP的关系紧密,是互联网比不可少的组成部分。TCP/IP一词泛指这些协议,因此,有时也称TCP/IP为网际协议群。 互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发定制的协议族。因此,互联网的协议就是TCP/IP。