三次握手

TCP协议的三次握手和四次挥手

不想你离开。 提交于 2020-01-27 05:12:09
三次握手: 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据。 四次挥手: 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1 服务器B关闭与客户端A的连接,发送一个FIN给客户端A 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1 为什么三次握手,却是四次挥手呢?   这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了

简述TCP的三次握手过程

荒凉一梦 提交于 2020-01-27 03:34:39
一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。 (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下: (A)URG:紧急指针(urgent pointer)有效。 (B)ACK:确认序号有效。 (C)PSH:接收方应该尽快将这个报文交给应用层。 (D)RST:重置连接。 (E)SYN:发起一个新连接。 (F)FIN:释放一个连接。 需要注意的是: (A)不要将确认序号Ack与标志位中的ACK搞混了。 (B)确认方Ack=发起方seq+1,两端配对。 二、三次握手 所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示: 图2 TCP三次握手 (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server

华为HCIA复习--传输层协议内容--必看必会

空扰寡人 提交于 2020-01-26 22:04:24
传输层协议 tcp或者udp协议,传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议和用户数据协议。 1.TCP:tcp是一种面向连接的传输层协议,提供可靠的传输服务。 2.tcp端口号: ftp:21-20 http:80 telnet:23 smtp:25 端口号是用来区分不同的网络服务, 0-1023是知名端口号,1024-65535是动态端口号 3.tcp头部: tcp端口号: tcp的序列号和确认号: 源端口+目的端口+序列号+确认号 tcp的建立简介 tcp的建立连接过程: tcp通过三次握手建立可靠连接 tcp的传输过程以及流量控制机制–滑动窗口 tcp的关闭 主机在关闭连接之前,要确认收到来自对方的ack udp: udp是一种面向无连接的传输层协议,传输可靠性没有保证 当应用程序对传输的可靠性要求不高,但是对传输速度要求高的时候。 udp头部: udp头部仅占8字节,传输数据时没有机制。 数据转发的过程: tcp/ip协议簇和底层协议的配合,保证数据的端到端的传输。 应用层-传输层-网络层-数据链路层-物理层 数据转发过程的概述: 数据包在相同的网段内或不同网段之间转发所依据的原理基本一致。 TCP封装: 当主机建立了到达目的地址的tcp连接后,便开始对应用层的数据进行封装 数据帧转发过程: 如果主机工作在半双工状态下

Linux 内核优化

烈酒焚心 提交于 2020-01-26 16:45:22
声明:本文档来自互联网整理部份加自已实验部份所得: TCP 相关部份 经常使用名词说明: retries( 再试 ) 、 TCP server <---> client通信状态 SYN----------------> <--------------SYN,ACK ACK---------------> 建立连接 Data1----------------> <---------------Data1,ACK Data2----------------> <--------------- 未回复 Data2----------------> 重传 [ 序列參数 tcp_sack, tcp_fack ] [ 重传次数參数 : tcp_retries1,tcp_retries2, tcp_orphan_retries ] 传输数据 FIN------------------> <-----------------FIN,ACK( 有时候 FIN,ACK 分两次 ) ACK-----------------> 断开连接 . 主动关闭 FIN------------------> <-----------------CLOSE_WAIT SYN 表示建立连接, RTT(Round-Trip Time): 往返时延 FIN 表示关闭连接, RTO ( Retransmission

网络通信: TCP与UDP协议

落爺英雄遲暮 提交于 2020-01-26 15:00:21
主要参考: c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码 ; UDP协议的详细解析 ; TCP 详解 文章目录 网络编程和套接字 消息接收过程 消息发送过程 UDP协议 简介 代码实现 TCP协议 简介 代码实现 网络编程和套接字 网络编程 是编写程序使两台 联网的 计算机相互交换数据, 主要依靠操作系统提供的“套接字”部件. 套接字 是用于网络数据传输的软件设备, 如果将网络通信类比为电话机通信系统,那套接字就是电话机, 渠道就是互联网, 和电话拨打或接听一样,套接字也可以发送或接收. 消息接收过程 先有一台电话机: 创建套接字, 即 实例化 int socket(int domain, int type, int protocol); 电话机要有电话号码的问题: 给套接字 绑定 地址信息(IP地址和端口号) int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen); 设置电话机为可接听状态: 设置套接字为 可接听 状态 int listen(int sockfd, int backlog); 接听电话: 套接字 接受 消息 int accept(int sockfd, struct sockaddr *addr, socklen_t

计算机网络高频面试题

主宰稳场 提交于 2020-01-26 12:28:32
目录 一、计算机网络的三种模型? 二、TCP、UDP 协议有什么区别? 三、在浏览器输入一个地址,到显示这个页面的过程(过程中使用了哪些协议)? 四、HTTP长连接与短连接 五、说说 TCP 建立连接时的三次握手? 六、TCP 断开连接的四次挥手,以及为什么要四次挥手? 一、计算机网络的三种模型? 二、TCP、UDP 协议有什么区别? 特点: TCP 是面向连接的,以字节流形式传输,提供可靠传输,但 传输效率低,所需资源多; UDP 是无连接的,以数据报文段形式传输,不保证可靠传输,但 传输效率高,所需资源少。 应用场景: TCP 用于要求通信数据保证可靠的服务,比如文件传输,邮件传输,远程登录等; UDP 用于要求通信速度快的服务,比如 视频语音通话,赛事直播等。 TCP 首部字节是 20~60 个; UDP 首部字节是 8 个字节,这8个字节由4个字段组成。 三、在浏览器输入一个地址,到显示这个页面的过程(过程中使用了哪些协议)? 过程: 域名解析,浏览器查找域名对应的IP地址。 与服务器建立连接 发送HTTP请求 服务器响应HTTP请求并返回HTTP报文 浏览器解析并渲染页面 连接结束 使用的协议: DNS:域名系统协议,根据域名获取对应IP。 ==》 DNS百科 TCP:传输控制协议,与服务器建立TCP连接。==》 TCP百科 IP:发送数据时在网络层使用的协议。==》

说说TCP,UDP和socket,Http之间联系和区别

て烟熏妆下的殇ゞ 提交于 2020-01-26 03:09:08
整理的这些区别和联系都是非常重要的。 TCP协议 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。 在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。 TCP的优点 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 由于TCP存在确认机制和三次握手机制,这些是导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。 TCP应用场景 当对网络通讯质量有要求的时候,比如

网络架构系列1--TCP/IP详解

不羁的心 提交于 2020-01-26 02:37:40
不诗意的女程序媛不是好厨师~ 转载请注明出处,From李诗雨—[https://blog.csdn.net/cjm2484836553/article/details/103930596] 《网络架构系列1--TCP/IP详解》 1.计算机网络分层▲(面试点) 1.1 OSI七层网络模型 和 TCP/IP参考模型 2.IP地址 和 端口号 2.1 IP地址 2.2 端口号➹(暗涉一道面试题) 3. TCP和UDP 3.1 TCP的定义和特点 3.2 UDP的定义和特点 4. TCP报文结构 5. TCP中的三次握手▲▲▲(面试点) 5.1 描述一下TCP中三次握手的流程 5.2 为什么TCP建立连接需要三次握手? 5.3 TCP三次握手有什么漏洞吗(知道即可) 6.TCP中的四次挥手(面试点▲) 6.1 描述一下TCP中四次挥手的流程 6.2 为什么TCP释放连接需要四次挥手? 6.3 为什么建立连接是三次握手,而关闭连接却是四次挥手呢,为什么2、3两次不能合并呢? 7.TCP协议中的窗口机制(拓展,了解一下即可) 网络架构,可以算得上是面试的宠儿了,我也废话不多说,直接上重点。 1.计算机网络分层▲(面试点) 1.1 OSI七层网络模型 和 TCP/IP参考模型 重点1 :OSI七层网络模型 和 TCP/IP参考模型 ,它可是面试的敲门砖,所以大概的内容要记住。 (PS

Linux tcpdump命令详解

折月煮酒 提交于 2020-01-25 23:47:39
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支 持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例 默认启动 tcpdump 普通情况下,直接启动 tcpdump 将监视第一个网络接口上所有流过的数据包。 监视指定网络接口的数据包 tcpdump -i eth1 如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。  监视指定主机的数据包 打印所有进入或离开sundown的数据包. tcpdump host sundown 也可以指定ip,例如 截获所有 210.27.48.1 的主机收到的和发出的所有的数据包 tcpdump host 210.27.48.1 打印helios 与 hot 或者与 ace 之间通信的数据包 tcpdump host helios and \( hot or ace \) 截获主机 210.27.48.1 和主机 210.27.48.2 或 210.27.48.3 的通信 tcpdump host 210.27.48.1 and \ (210.27

TCP/IP协议详解

让人想犯罪 __ 提交于 2020-01-25 10:48:40
1、TCP/IP协议栈 四层模型 TCP/IP这个协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口层。 网络接口层 模型的基层是网络接口层。负责数据帧的发送和接收,帧是独立的网络信息传输单元。网络接口层将帧放在网上,或从网上把帧取下来。 互联层 互联协议将数据包封装成internet数据包并运行必要的路由算法。 这里有四个互联协议: 网际协议IP:负责在主机和网络之间寻址和路由数据包。 地址解析协议ARP:获得同一物理网络中的硬件主机地址。 网际控制消息协议ICMP:发送消息,并报告有关数据包的传送错误。 互联组管理协议IGMP:被IP主机拿来向本地多路广播路由器报告主机组成员。 传输层 传输协议在计算机之间提供通信会话。传输协议的选择根据数据传输方式而定。 两个传输协议: 传输控制协议TCP:为应用程序提供可靠的通信连接。适合于一次传输大批数据的情况。并适用于要求得到响应的应用程序。 用户数据报协议UDP:提供了无连接通信,且不对传送包进行可靠的保证。适合于一次传输小量数据,可靠性则由应用层来负责。 应用层 应用程序通过这一层访问网络。 网络接口技术 IP使用网络设备接口规范NDIS向网络接口层提交帧。IP支持广域网和本地网接口技术。 串行线路协议 TCP/IPG一般通过internet串行线路协议SLIP或点对点协议PPP在串行线上进行数据传送。