tcp协议

跟着动画来学习TCP三次握手和四次挥手

偶尔善良 提交于 2020-03-18 17:06:42
TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一。很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答。 本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地地理解TCP交互的本质。 TCP 三次握手 TCP 三次握手就好比两个人在街上隔着50米看见了对方,但是因为雾霾等原因不能100%确认,所以要通过招手的方式相互确定对方是否认识自己。 张三首先向李四招手( syn ),李四看到张三向自己招手后,向对方点了点头挤出了一个微笑( ack )。张三看到李四微笑后确认了李四成功辨认出了自己(进入 estalished 状态)。 但是李四还有点狐疑,向四周看了一看,有没有可能张三是在看别人呢,他也需要确认一下。所以李四也向张三招了招手( syn ),张三看到李四向自己招手后知道对方是在寻求自己的确认,于是也点了点头挤出了微笑( ack ),李四看到对方的微笑后确认了张三就是在向自己打招呼(进入 established 状态)。 于是两人加快步伐,走到了一起,相互拥抱。 我们看到这个过程中一共是四个动作,张三招手--李四点头微笑--李四招手--张三点头微笑。其中李四连续进行了2个动作,先是点头微笑(回复对方),然后再次招手(寻求确认),实际上可以将这两个动作合一,招手的同时点头和微笑( syn+ack )。于是四个动作就简化成了三个动作,张三招手-

TCP三次握手,四次挥手

对着背影说爱祢 提交于 2020-03-18 14:08:53
TCP三次握手详解及释放连接过程 TCP协议中的三次握手和四次挥手(图解) 暂时需要的信息有: ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。 FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。 seq是序列号,这是为了连接以后传送数据用的,ack是对收到的数据包的确认,值是等待接收的数据包的序列号。 在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B;第二次消息B使用ack对A的数据包进行确认,因为已经收到了序列号为x的数据包,准备接收序列号为x+1的包,所以ack=x+1,同时B告诉A自己的初始序列号,就是seq=y;第三条消息A告诉B收到了B的确认消息并准备建立连接,A自己此条消息的序列号是x+1,所以seq=x+1,而ack=y+1是表示A正准备接收B序列号为y+1的数据包。 seq是数据包本身的序列号;ack是期望对方继续发送的那个数据包的序列号。 三次握手的过程:

1.概述

…衆ロ難τιáo~ 提交于 2020-03-18 12:23:27
tcp/ip协议分层与OSI分层对比: 从上图中可以看出tcp/ip模型实际把osi模型中的应用层、表示层、会话层统一划分为应用层。因为tcp/ip模型的应用层负责处理特定的应用程序细节,这里我们要清楚的是osi模型是理论中的网络模型,tcp/ip模型是实际中应用的网络模型。 TCP/IP协议族按照层次由上到下,层层包装。发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议 从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以某些文章也把tcp/ip协议族称为tcp/ip协议栈。 来源: https://www.cnblogs.com/learnwork/p/12516270.html

查看sqlserver的端口号

偶尔善良 提交于 2020-03-18 11:56:45
1.如果你是win2003,那么一定要安装sql的补丁sp3a以上版本SP 检查你的SQL有没有打补丁,没有的话要打上补丁,检查的方法是在查询分析器中运行: select @@version 如果出来的版本号是8.00.760以下,则表明你未安装sp3的补丁,要装上. SQL补丁下载: 全部补丁的位置 http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=9032f608-160a-4537-a2b6-4cb265b80766 注意下载后,执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装 2.SQL Server连接中的四个最常见错误: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误 2,服务器端网络配置有误 3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,检查网络物理连接 ============= ping <服务器IP地址/服务器名称> 如果 ping <服务器IP地址> 不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB

TCP/IP协议学习导览

烈酒焚心 提交于 2020-03-17 23:27:32
某厂面试归来,发现自己落伍了!>>> 前言 从字面意义上讲,有人可能会认为TCP/IP是指TCP和IP两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用IP进行通信时所必须用到的协议群的统称。具体来说,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都属于TCP/IP协议。 该文章主要为《TCP-IP详解卷1:协议》归纳笔记 1. 网络的分层 网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层的协议系统。 链路层 有时也称作 数据链路层或网络接口层 ,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。 网络层 有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括 IP 协议(网际协议), ICMP协议 (Internet互联网控制报文协议),以及 IGMP协议 (Internet组管理协议)。 运输层 主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议: TCP(传输控制协议)和UDP(用户数据报协议)。 TCP为两台主机提供高可靠性的数据通信

socket编程——tcp通信

自古美人都是妖i 提交于 2020-03-17 17:23:18
tcp通信流程 :面向连接,可靠传输,面向字节流 客户端(client): 创建套接字 绑定地址信息(不推荐主动) 向服务端发出连接请求 收 / 发数据 关闭套接字 服务端(server): 创建套接字 ——在内核创建socket结构体与网卡建立联系 为套接字绑定地址信息 ——告诉操作系统哪些数据交给我处理—放到我的接收缓冲区 开始监听 ——告诉操作系统可以开始接收哭护短的连接请求—客户端与服务端进行tcp通信必须首先建立连接—确保双方都具有数据收发的能力。 当服务端收到了客户端的连接请求,连接的建立过程是在内核完成的。 tcp服务端最早的套接字只用于接收新连接请求,连接请求到来之后创建新的套接字,创建的新的套接字用于与客户端进行后续的通信 服务端程序获取新创建的socket套接字操作句柄 服务端程序在内核会接收新连接,创建新的socket 服务端程序获取内核中新创建的socket操作句柄 在服务端程序这边通过这个获取的操作句柄与客户端进行通信 服务端通过新建套接字可以与客户端进行数据通信 接收数据 / 发送数据 tcp在数据通信的时候,谁先发送都可以(因为这时候连接已经建立) 关闭套接字:释放资源 socket进行tcp通信的接口介绍: 1、创建套接字 int socket ( int domain , int type , int protocol ) (地址域 AF_INET

速读原著-TCP/IP(Whois协议)

那年仲夏 提交于 2020-03-17 17:08:17
第30章 其他的TCP/IP应用程序 30.3 Whois协议 W h o i s协议是另一种信息服务。尽管任何站点都可以提供一个 W h o i s服务器,在I n t e r N I C站点(r s . i n t e r n i c . n e t)的服务器是最常使用的。这个服务器维护着所有的 D N S域和很多连接在I n t e r n e t上的系统的系统管理员的信息(另一个可用的服务器在 n i c . d d n . m i l,不过只包含了有关M I L N E T的信息)。不幸的是信息有可能是过期的或不完整的。 RFC954 [Harrenstein, Stahl,and Feinler 1985] 说明了W h o i s服务。 从协议的角度来看,W h o i s服务器有一个知名的T C P端口4 3。它接受客户的连接请求,客户向服务器发送一个在线的查询。服务器响应以任何可用的信息,然后关闭连接。请求和应答都以NVT ASCII来传输。除了请求和应答所包含的信息不一样, W h o i s服务器和F i n g e r服务器几乎是一样的。 最常用的U n i x客户程序是whois(1) 程序,尽管我们可以使用 Te l e n t自己手工键入命令。开始的命令是只包含一个问号的请求,服务器会返回所支持的客户请求的具体信息。 当N I C在1 9 9

TCP 和 UDP的最完整的区别

蓝咒 提交于 2020-03-17 13:03:16
转自:https://www.cnblogs.com/williamjie/p/9390164.html TCP(Transmission Control Protocol , 传输控制协议) DUP(User Data Protocol, 用户数据报协议) TCP优点与缺点: 可靠,稳定。TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源。TCP的缺点:慢,效率低,占用系统资源高,易被攻击TCP在传递数据之前,要先建立连接,这会消耗时间,而且数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。而且,因为TCPyou确认机制、三次握手机制、这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。 UDP优点和缺点: 快,比TCP稍安全 UDP没有TCP的握手,确认,窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传输数据时非常的快。没有TCP的这些机制,UDP比TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击.....UDP缺点:不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时

TCP/IP

筅森魡賤 提交于 2020-03-17 12:25:27
1.TCP/IP协议族分层模型 应用层 直接与用户信息打交道。主要是 HTTP、DNS 协议。 传输层 TCP、UDP 是此层的重要协议。 TCP: 面向连接的,可靠的协议; UCP:无连接的,不可靠的协议。 互联网层(IP层) 与对方计算机之间通过多台计算机或网络设备进行传输时,在多种选择种选择一条传输线路。 IP 协议。 网络接口层(数据链路层) 硬件处理范畴。 2.HTTP协议发送Web网页HTTP请求过程 HTTP–>传输层(把HTTP请求报文分割,打上标记序号和端口号)–>网络层(添加通信目的地 MAC地址)–>链路层 3. 封装 发送端从应用层往下走,接收端从应用层往上走。 发送端在层与层之间传输数据时,每经过一层会打上一个该层所属的头部信息,就是 封装 。 接受层在层与层传输数据时,每经过一层时会把对应的首部去掉。 3. 建立TCP三次握手: Client(客户):主动发起建立的应用进程; Server(服务器):被动等待连接的应用进程。 第一次握手:Client 标志位SYN=1的数据包,随机产生一个值seq=x,并将该数据包发送给Server,Client进入SYN-SENT状态。 第二次握手:Server明白,发送SYN=1,ACK=1,ack=x+1随机产生seq=y,数据包。 第三次握手:Client明白发送ACK=1,ack=y+1;并发送

TCP和UDP的比较(包含“三次握手,四次挥手”)

允我心安 提交于 2020-03-17 11:12:36
接TCP和UDP编程流程一节 写在前面:这里关于TCP的“三次握手和四次挥手“”描述的不是非常清楚,详细的见后文哦~ TCP和UDP的区别 TCP是面向连接的,可靠的,字节流服务 UDP是无连接,不可靠的,数据报服务 如图(3-1)所示: 1.发送方的send的次数和recv接收方的次数是不对等的; 2.发送方send的次数与底层封装的TCP报文段的个数不对等; 3.接收方如果一次recv未将TCP接收缓冲区中的数据读完,后续的recv会接着读取。 如图(3-2)所示: 1.sendto和recvfrom的次数是相等的; 2.sendto与底层UDP数据报的个数是相等的; 3.一次recvfrom如果没有将一个UDP报文段中的数据读完,则剩余的数据会被丢弃。 ————————————————————————————————————————————— TCP的面向连接 三次握手: 思考:为什么是三次握手?? 四次挥手: 思考:为什么要四次握手?? —————————————————————————————————— TCP的可靠性传输保证: UDP协议 来源: CSDN 作者: 飞流直下 链接: https://blog.csdn.net/weixin_44737923/article/details/103328365