tcp四次挥手

网络基础(二)及HTTP协议

China☆狼群 提交于 2020-02-12 19:45:45
网络基础(二)及HTTP协议 一、HTTP协议 1 . 什么是url? 平时我们俗称的 “网址” 其实就是说的 URL 2.http协议的格式 http请求: 首行: [方法] + [url] + [版本] Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束 空行 Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; http响应: 首行: [版本号] + [状态码] + [状态码解释] Header: 请求的属性,冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束 空行 Body: 空行后面的内容都是Body.Body允许为空字符串. 如果Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度;如果服务器返回了一个html页面, 那么html页面内容就是在 body中. http常见的Header: Content-Type: 数据类型(text/html等) Content-Length: Body的长度 Host:客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上; User-Agent: 声明用户的操作系统和浏览器版本信息;

TCP的三次握手与四次挥手理解及面试题

牧云@^-^@ 提交于 2020-02-11 21:39:38
ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号(是数字)。 标志位: 确认ACK:占1位;ACK=1时,确认号字段数字有效;ACK=0时,确认号字段数字无效。 同步SYN:建立连接时用于同步序号。当SYN=1 ACK=0时表示:这是一个连接请求报文。若同意连接,则在响应报文段中使得SYN=1 ACK=1。因此,SYN=1表示这是一个连接请求报文,或连接接受报文。SYN这个标志位只有在TCP建立连接时才会被置1,握手完成后SYN被置零。 终止FIN:用来释放一个连接。FIN=1表示此报文段发送方的数据已经发送完毕,并要求释放运输连接。 两种序列号: 序列号seq:占4个字节,用来标记数据段的顺序(是标记同一个报文里不同数据字节的顺序,不同报文之间的顺序还没弄明白),TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生(意思是每个报文的第一个数据字节的编号都是重新随机生成的);给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。 x和y

Socket

泪湿孤枕 提交于 2020-02-10 05:37:50
学socket编程的意义   客户端/服务器架构(c/s架构) 硬件c/s架构(打印机) 软件c/s架构         互联网中处处是C/S架构     如某网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种)     腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频   C/S架构与socket的关系:      socket就是为了更加便捷的完成C/S架构的开发 OSI七层    一个完整的计算机系统是由硬件、操作系统、应用软件三者组成,具备了这三个条件,一台计算机系统就可以自己跟自己玩了(打个单机游戏,玩个扫雷啥的)    如果你要跟别人一起玩,那你就需要上网了,什么是互联网?   互联网的核心就是由一堆协议组成,协议就是标准,比如全世界人通信的标准是英语。    人们按照分工不同把互联网协议从逻辑上划分了层级:     互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层:          每层常用的物理设备:         为何学习socket一定要先学习互联网协议:         1.首先:本节课程的目标就是教会你如何基于socket编程,来开发一款自己的C/S架构软件   2.其次:C/S架构的软件(软件属于应用层)是基于网络进行通信的   3.然后:网络的核心即一堆协议,协议即标准

面试题总结(一)、TCP协议

一笑奈何 提交于 2020-02-10 03:57:21
声明:本文主要探讨当TCP协议出现在面试笔试场合可能会涉及的问题,每一个知识点讨论力求简洁,便于记忆,但讨论深度有限,如要深入研究可点击参考链接,希望对正在找工作的同学有点帮助。 一、TCP协议简介 一般问到TCP协议的时候 最常见的是TCP连接建立和断开的过程,也就是三次握手和四次挥手,两张图足矣。 1.1 三次握手 1.2 四次挥手 二、常见面试题 2.1 TCP连接阶段 2.1.1 发送序号和确认序号问题 例: TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000,请问第二次握手报文的发送序列号和确认序列号分别为? 答:看答案时请参考上面TCP连接建立的图。 客户端:发送X 服务端:发送Y, 确认X+1 客户端:发送X+1(1000),确认Y+1(2000) 可以反推第二次为1999,确认1000 2.1.2 SYN Flood 攻击原理及防御 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。 原理: 问题出在TCP连接的三次握手中,恶意的攻击者大量发送SYN报文,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接

图解TCPIP---第六章---传输层TCPUDP

寵の児 提交于 2020-02-09 23:42:26
哈哈哈哈哈哈哈哈 TCPIP识别一个进行通信的应用需要5大要素 源IP地址 目标IP地址 源端口 目标端口 协议号 0-1023 知名端口号 1024-49151 这些端口被正式注册了 但是可以用于任何通信 49152-65535 操作系统动态分配的端口号 一些知名端口号如下 20 ftp-data File Transfer [Deafult Data] 21 ftp File Transfer [Control] 22 ssh 23 talent 25 smtp Simple Mail Transfer Protocol 43 nicname Who Is 53 domain Domain Name Server 80 http 101 hostname NIC Host Name Server 443 https UDP 常被用于以下几个方面 包总量比较少的通信 DNS SNMP等 视频 音频等多媒体通信 限定于LAN等特定网络中的应用通信 广播通信(广播 多播) TCP 确认应答 序列号 TCP通过检验和 序列号 确认应答 重发控制 连接管理 窗口控制 等 机制实现可靠传输 确认应答ACK acknowledgement 否定确认应答 NACK negative acknowledgement Q1 发送端发送数据后会等待对端的确认应答 一定时间未等到确认应答

Linux网络编程 - TIME_WAIT

情到浓时终转凉″ 提交于 2020-02-08 23:31:35
1. TIME_WAIT 发生场景 让我们先从一例线上故障说起。在一次升级线上应用服务之后,我们发现该服务的可用性变得时好时坏,一段时间可以对外提供服务,一段时间突然又不可以,大家都百思不得其解。运维同学登录到服务所在的主机上,使用 netstat 命令查看后才发现,主机上有成千上万处于 TIME_WAIT 状态的连接。 为什么呢?我们这个应用服务需要通过发起 TCP 连接对外提供服务。每个连接会占用一个本地端口,当在高并发的情况下,TIME_WAIT 状态的连接过多,多到把本机可用的端口耗尽,应用服务对外表现的症状,就是不能正常工作了。当过了一段时间之后,处于 TIME_WAIT 的连接被系统回收并关闭后,释放出本地端口可供使用,应用服务对外表现为,可以正常工作。这样周而复始,便会出现了一会儿不可以,过一两分钟又可以正常工作的现象。 TIME_WAIT 是怎么产生的?首先从四次挥手说起,下面先展示一张图: TCP 连接终止时,主机 1 先发送 FIN 报文,主机 2 进入 CLOSE_WAIT 状态,并发送一个 ACK 应答,同时,主机 2 通过 read 调用获得 EOF,并将此结果通知应用程序进行主动关闭操作,发送 FIN 报文。主机 1 在接收到 FIN 报文后发送 ACK 应答,此时主机 1 进入 TIME_WAIT 状态。过了这个时间之后,主机 1 就进入 CLOSED

TCP/IP协议学习笔记(二)

冷暖自知 提交于 2020-02-08 05:20:40
传输层 TCP协议 本文主要整理TCP协议的知识点 1 前言 尽管TCP和UDP都使用相同的网络层(IP), TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。 TCP具有以下特点 1、面向连接 每个TCP段都包含一个源端口号和目的端口号,用来确定发送端和接收端的应用进程,然后结合IP首部中的源端IP地址和目的端IP地址就能唯一确定一个TCP连接。 2、可靠 TCP协议拥有各种机制来确保数据传送的可靠性,例如超时重传策略,保持首部和数据的校验和,流量控制和校验已收到数据的完整性和正确性等。 2 TCP首部 TCP报文段被封装到IP数据报中,通常是20个字节。 源端口号和目的端口号 :用于寻找发送端和接收端的应用进程,分别是16位 Sequence Number (序列号):报文段中的第一个字节,用于标识发送的数据字节流 Acknowledgment Number (确认号):确认序列号包含发送确认的一端所期望收到的下一个序号,因此,确认序号应当是上次已成功收到数据字节序号加1。不过,只有当标志位中的ACK标志为1时该确认序列号的字段才有效。 Offset(数据偏移 ):给出首部中32 bit字的数目,需要这个值是因为任选字段的长度是可变的。这个字段占4bit(最多能表示15个32bit的的字,即4*15=60个字节的首部长度)

wireshark抓包分析---TCP/IP协议

孤者浪人 提交于 2020-02-07 21:20:41
当我们需要跟踪网络有关的信息时,经常会说“抓包”。这里抓包究竟是什么?抓到的包又能分析出什么?在本文中以TCP/IP协议为例,简单介绍TCP/IP协议以及如何通过wireshark抓包分析。 Wireshark 是最著名的网络通讯抓包分析工具。功能十分强大,可以截取各种网络封包,显示网络封包的详细信息。 Wireshark下载安装,略。注意,若在Windows系统安装Wireshark,安装成功后可能会出现Wireshark的两个图标,一个是Wireshark(中文版);另外一个是Wireshark Legacy (英文版)。下面的内容会以Wireshark Legacy为例介绍。 打开Wireshark,开始界面如下: Wireshark捕获的是网卡的网络包,当机器上有多块网卡的时候,需要先选择网卡。开始界面中的Interface List,即网卡列表,选择我们需要的监控的网卡。点击Capture Options,选择正确的网卡,然后点击"Start"按钮, 开始抓包。 我们打开浏览器输入任意http网址,连接再关闭,比如:http://blog.csdn.net。然后,我们回到Wireshark界面,点击左上角的停止按键。查看此时Wireshark的抓包信息。在看抓包信息之前,先简单介绍下Wireshark界面的含义。其中,封包列表的面板中显示编号、时间戳、源地址、目标地址

基础 | 网络编程

╄→尐↘猪︶ㄣ 提交于 2020-02-07 07:16:57
一、计算机网络的相关概念 1.计算机网络 通过传输介质、网络协议和通信设施,将分散在不同位置的计算机互连,实现资源共享和数据传输的系统。 计算机网络的功能: 1.资源共享 2.信息传输与集中处理 3.均衡负荷与分布处理 4.综合信息服务 2.网络编程 又称Socket编程,是指在操作系统,网络管理软件,网络通信协议的管理和协调下,使用计算机编程语言来实现计算机之间的资源共享和信息传递。 二、计算机网络的三要素: 1.IP地址 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址。指的是计算机在网络中的唯一标识,IP地址的长度为32个比特位(4字节),一般用“点分十进制”表示。 分类 首字节开始位 首字节数值范围 网络格式地址 最大网络个数 每个网络最多主机个数 A类 0 0-127 网络.主机.主机.主机 127 16777214 B类 10 128-191 网络.网络.主机.主机 16384 65534 C类 110 192-223 网络.网络.网络.主机 2097152 254 D类 1110 224-239 用于在 IP 网络中的组播,不再分配 E类 1111 240-255 保留作研究之用,不再分配 2.端口号: 端口号用于标识进程的逻辑地址;其有效端口的范围是从 0到65535,其中 0-1024 系统使用或保留端口。注意

TCP 简单介绍

最后都变了- 提交于 2020-02-05 18:58:40
TCP 简单介绍 TCP 特性 TCP 首部 TCP 三次握手和四次挥手 三次握手 四次挥手 TCP 状态转换 TCP 输出 TCP TCP(Transmission Control Protocol,传输控制协议),是一个传输层协议。TCP 提供客户与服务器之间的连接。TCP 客户先与某个给定的服务器建立一个连接,再通过该连接与服务器交换数据,最后再终止该连接。 特性 1.可靠性 TCP 在向对端传输数据时,要求对方收到数据后返回一个确认。如果在等待一定时间后没有收到确认,则自动重传该数据并等待更长的时间。只有在数次重传都失败后,TCP 才会放弃这次传输同时告知用户。 TCP 的可靠性并不意味着数据一定会被对端接受 2.RTT估算 RTT(Round-trip time),TCP 会动态估算客户和服务器之间的往返时间,以便它了解在特定的网络状况下等待一个确认需要花费多久的时间。 3.序列号 TCP 通过对不同 TCP 分节的数据字节进行编号,来确认数据的先后顺序和漏发、重发的情况。 4.流量控制 TCP 总是告知对端在任何时刻它一次能够从对端接受的数据,这称为通告窗口。通告窗口的大小会随着发送端数据接受和接收端应用读取数据的发生而变化。 5.全双工 建立 TCP 连接后,能够同时在该连接上发送、接受数据。 全双工不意味着连接是反向相等的,两端数据的传输可能经过不同的路由 6