tcp四次挥手

java中TCP、UDP的简单网络编程

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-08 17:39:57
文章目录 一、有关网络编程概念 二、TCP网络编程 2.1 TCP网络编程的客户端 2.2 TCP网络编程的服务端 三、UDP网络编程 3.1 UDP发送端 3.2 UDP的接收方 一、有关网络编程概念 传输层实现端到端的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。传输层连接的端点叫做套接字(socket)。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址:端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字是(210.37.145.1:23)。 总之,套接字Socket=(IP地址:端口号)。 有关网络编程中的API: java.net包下的InetAddress类:此类表示互联网协议(IP)地址。 (1)InetAddress getLocalHost() 域名:www.baidu.com 因为IP地址的数字较长,不方便记忆。所以设计了域名,来与IP地址对应。 由域名解析器(DNS)来解析对应关系。InetAddress getByName(xx) 来获取主机名和ip地址 二、TCP网络编程 2.1 TCP网络编程的客户端 TCP网络编程的客户端: 1

WebSocket、Socket、TCP、HTTP区别

会有一股神秘感。 提交于 2020-03-08 14:33:28
1. 概述 WebSocket 是为了满足基于 Web 的日益增长的实时通信需求而产生的。在传统的 Web 中,要实现实时通信,通用的方式是采用 HTTP 协议不断发送请求。但这种方式即浪费带宽(HTTP HEAD 是比较大的),又消耗服务器 CPU 占用(没有信息也要接受请求)。(下图来自 WebSocket.org ) 而是用 WebSocket 技术,则会大幅降低上面提到的消耗:(下图来自 websocket.org ) 关于更详细的描述,尹立的这篇文章讲得非常好: WebSocket(2)–为什么引入WebSocket协议 。 那么,WebSocket 到底与 HTTP 协议到底是一个什么样的关系呢?它和 Socket 又有什么联系?这就要讲到 OSI 模型和 TCP/IP 协议族。 2. OSI 模型与 TCP/IP 以下是 维基百科 中关于OSI 模型的说明: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,ISO/IEC 7498-1),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织(ISO)提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。 而 TCP/IP 协议可以看做是对 OSI 模型的一种简化(以下内容来自 维基百科 ):

python之socket编程(一)

元气小坏坏 提交于 2020-03-07 12:50:23
socket之前我们先来熟悉回忆几个知识点。 OSI七层模型 OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模型,不仅包括一系列抽象的术语或概念,也包括具体的协议。(from百度) TCP/IP四层参考模型 由于OSI七层较为庞大,所以由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。 以下图片TCP/IP四层与OSI七层的区别,是百度上找的图片,大家迁就看: 他们的对应网络协议如下: 今天我们说的socket就在传输层。 TCP/IP三次握手建立连接 TCP/IP四次挥手关闭连接 接着我们来看下在TCP/IP四层中数据之间的一些关系吧: TCP/IP解释 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,定义了电子设备如何连入因特网,以及数据如何在它们之间 传输的标准。 python中socket编程 上面一balabala一堆废话,无非想引出来socket这个东西,那么这个socket是个什么鬼呢?socket是TCP/IP中传输层中TCP、UDP的实现方式,用socket编程,可以实现TCP UDP的通信

tcpdump抓取HTTP包

你说的曾经没有我的故事 提交于 2020-03-06 14:17:25
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 0x4745 为"GET"前两个字母"GE" 0x4854 为"HTTP"前两个字母"HT" 说明: 通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手 里面的几个概念: SYN: (同步序列编号,Synchronize Sequence Numbers) ACK: (确认编号,Acknowledgement Number) FIN: (结束标志,FINish) TCP三次握手(创建 OPEN) 客户端发起一个和服务创建TCP链接的请求,这里是SYN(J) 服务端接受到客户端的创建请求后,返回两个信息: SYN(K) + ACK(J+1) 客户端在接受到服务端的ACK信息校验成功后(J与J+1),返回一个信息:ACK(K+1) 服务端这时接受到客户端的ACK信息校验成功后(K与K+1), 不再返回信息,后面进入数据通讯阶段 数据通讯 客户端/服务端 read/write数据包 TCP四次握手(关闭 finish) 客户端发起关闭请求,发送一个信息:FIN(M) 服务端接受到信息后,首先返回ACK(M+1),表明自己已经收到消息。 服务端在准备好关闭之前,最后发送给客户端一个 FIN(N)消息

TCP、UDP有关函数

我与影子孤独终老i 提交于 2020-03-06 01:27:13
首先看一下上一篇三次握手四次挥手文章中提到的原理图。 其中的read对应的就是recv函数,write对应的就是send函数。 步入正题,函数的使用: 1.TCP客户端 socket : 创建套接字 函数原型 : int socket ( int family , int type , int protocol ) ; 功能:创建一个用于网络通信的socket套接字(描述符) 参数 : @family : 协议族 ( AF_INET、AF_INET6、PF_PACKET ) @type : 套接字类 ( SOCK_STREAM、SOCK_DGRAM、SOCK_RAW ) @protocol : 协议类别 ( 0 、IPPROTO_TCP、IPPROTO_UDP ) ( 一般传 0 , 自动匹配 ) 返回值 : 套接字 特点 : 创建套接字时 , 系统不会分配端口。 创建的套接字默认属性是主动的 , 即主动发起服务的请求 ; 当作为服务器时 , 往往需要修改为被动的。 ( listen ) 头文件 : # include <sys/socket.h> connect : 连接“服务器” 函数原型 : int connect ( int sockfd , const struct sockaddr * addr , socklen_t len ) ; 功能 : 主动跟服务器建立链接

Python 网络编程之 TCP 与 UDP

血红的双手。 提交于 2020-03-05 23:35:22
Socket(套接字) 介绍 UDP 和 TCP 协议之前,先熟悉下 socket 的基本概念。 基本概念 Socket 是通信的基石,是支持 TCP/IP 协议的网络通信的基本操作单元,在网络通信过程中端点的一种抽象表示。网络中使用 Socket 传输数据是一种特殊的网络 I/O。 工作模式 打开open -> 读写write/read -> 关闭close 五种信息 socket 包括了数据传输必须的五元组,分别为源IP、源端口、目的IP、目的端口和协议号 通信机制 基于流(stream)或者基于数据报(datagram) python 中使用 import socket socket.socket(...) UDP UDP(User Datagram Protocol) 用户数据报协议,是一种面 向无连接 的协议,提供简单不可靠的信息传输服务,发送后不会确认信息是否到达。 UDP 通信模型中,在通信开始之前,不需要建立相关的链接,只需要发送数据即可,类似于生活中"写信"。 使用 socket 使用 UDP 的收发数据,先看原理图 客户端代码实现 # 客户端 发送数据 # 1.创建udp套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) while True: send_data = input(

python16_day07【Socket网络编程】

匆匆过客 提交于 2020-03-05 02:45:41
/*--> */ /*--> */ 一、简介   1.理解C/S,B/S   2.IOS七层模型(http://www.cnblogs.com/linhaifeng/articles/5937962.html)    二、什么是Socket   我们看看Socket的位置在什么地方?   Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。 所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。 三、Socket工作流程   先从服务器端说起。服务器端先初始化 Socket,然后与端口绑定 (bind),对端口进行监听 (listen),调用 accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个 Socket,然后连接服务器 (connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束 1

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

有些话、适合烂在心里 提交于 2020-03-04 04:23:44
三次握手: 目的:特指对接的三次报文(为什么要三次握手?就是让双方都能明确自己和对方的收、发能力是正常的,互相确认),并且能够交换初始序号的一类过程。 如下图:(三次握手是客户端和服务端建立连接时) 首先需要明确几个符号: ACK:即确认字符,是一种响应。 SYN/FIN:同步序列编号,是TCP/IP建立连接的握手信号。FIN顾名思义是结束、完成的意思,是结束连接的信号标识。 SEQ:序号 三次握手1.客户端发起连接(给服务端说:我要连接了,同时给他一个ack=1,seq=a)2.服务端响应(收到你的连接信息,给你一个seq=b)3.客户端--》服务端(收到你的回话,给你seq=b+1吗,同时确认ACK) 四次挥手:(四次挥手是TCP断开连接(关闭连接)时) 四次挥手:1.客户端给服务端(我要关闭了,给你一个FIN=1(关闭信号)) 2.服务端给客户端(收到你的关闭信息,ACK=Z+1,确认,但是在此时还有数据交互,所以服务端进入close_wait阶段) 3.服务端给客户端(给客户端说:我也要关闭了,给客户端一个FIN=1,seq=Y) 4.客户端给服务端(收到你要关闭的信号,给你一个确认信息ACK=Y,seq=y+1),然后自己关闭,发送到服务端让服务端收到也关闭接受。 这样的一个过程,自己的理解,希望能帮到大家! 来源: CSDN 作者: Mr_天先生 链接: https:/

第七周作业

删除回忆录丶 提交于 2020-03-03 13:18:56
1、简述osi七层模型和TCP/IP五层模型 TCP/IP与OSI最大的不同在于OSI是一个理论上的网络通信模型,而TCP/IP则是实际运行的网络协议; 1. OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。 2. OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。 3. OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。 osi 七层模型包括: 物理层、数据链路层、网络层、传输层、应用层、会话层; TCP/I五层模型包括:网络接口层、网际层、传输层、应用层; 对应关系: 2、总结描述TCP三次握手四次挥手 客户端A向服务器B建立连接的三次握手: 1、A请求:A请求建立连接,发送序列号为X、标志位SYN=1的包,请求建立连接,此时,A进入同步已发送状态(SYN-SEND); 2、B确认:B收到A发送的请求之后,若同意建立连接,发送序列号位Y、确认序号为X+1、SYN=1、ACK=1的包,此B进入同步已接收状态(SYN-RCVD); 3、A确认:A收到B的确认包后,发送序列号为X+1、确认序号为Y+1、ACK=1的包,确认收到;将该报文发出后,A进入已连接状态(ESTABLISHED),B收到之后进入已连接状态(ESTABLISHED)

第七周作业

喜夏-厌秋 提交于 2020-03-03 13:12:29
1、简述osi七层模型和TCP/IP五层模型 TCP/IP与OSI最大的不同在于OSI是一个理论上的网络通信模型,而TCP/IP则是实际运行的网络协议; 1. OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。 2. OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。 3. OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。 osi 七层模型包括: 物理层、数据链路层、网络层、传输层、应用层、会话层; TCP/I五层模型包括:网络接口层、网际层、传输层、应用层; 对应关系: 2、总结描述TCP三次握手四次挥手 客户端A向服务器B建立连接的三次握手: 1、A请求:A请求建立连接,发送序列号为X、标志位SYN=1的包,请求建立连接,此时,A进入同步已发送状态(SYN-SEND); 2、B确认:B收到A发送的请求之后,若同意建立连接,发送序列号位Y、确认序号为X+1、SYN=1、ACK=1的包,此B进入同步已接收状态(SYN-RCVD); 3、A确认:A收到B的确认包后,发送序列号为X+1、确认序号为Y+1、ACK=1的包,确认收到;将该报文发出后,A进入已连接状态(ESTABLISHED),B收到之后进入已连接状态(ESTABLISHED)