tpc协议属于传输层协议,本篇主要介绍下几个概念,以及握手和挥手的过程。

1.tcp的几个概念  

  位码:即tcp标志位,有6种提示

    SYN:synchronus,表示建立联机。

    ACK:acknowledgement,确认。

    PUSH:push,传送。

    FIN:finish,结束。

    RST:rest,重置。

    URG:urgent,紧急。

  Sequence number:顺序号码。

  Acknowledge number:确认号码。

2.三次握手过程(假设主机A和主机B进行通信)

  第一次握手:主机A发送SYN=1,seq_number=123456的数据包到达主机B,主机B由SYN=1知道,主机A要求建立联机。

  第二次握手:主机B收到请求之后,需要确认联机信息。需要像A发送ACK=1,ack_number=(主机A的seq_number+1),SYN=1,seq_number=7654321的包。

  第三次握手:主机A收到B的数据包之后,会去检查ack_number(即第一次发送的seq_number+1)以及ACK=1是否正确,若正确,主机A会像主机B发送ACK=1,ack_number=(主机B的seq_number+1)的数据包到达主机B,主机B收到后确认ACK=1和ack_number无误后,建立正常连接。

3.四次挥手的原因

 由于tcp的全双工特性(即数据在两个方向上能够同时传递),因此每个方向上必须进行单独的关闭。 关闭的原则是:当一方完成数据传输之后,就可以发送FIN=1的数据包来终止这个方向上的连接。当一端收到这个FIN=1的数据包后,通知应用层另一端已经终止了数据的发送操作(即收到一个FIN=1的数据包证明这个方向上已经没有数据流动了)。两端单独关闭的目的就是为了保证两端能够完全的接收到对方发送的数据包。

4.四次挥手过程(假设主机A和主机B进行通信)

  第一次挥手:主机A像主机B发送FIN=1的数据包;即A告诉B,我(A)发送给你(B)的数据大小是N,我已经发送完毕,请求断开我(A)到你(B)的连接。

  第二次挥手:主机B收到主机A发送的FIN数据包,并像主机A发送ACK数据包;即B告诉A,是的,我总共收到了你发送给我N大小的数据包,现在断开你(A)到我(B)的连接。

  第三次挥手:主机B像主机A发送FIN=1的数据包;即B告诉A,我(B)发送给你(A)的数据大小是N,我已经发送完毕,请求断开我(B)到你(A)的连接。

  第四次挥手:主机A收到主机B发送的FIN数据包,并像主机B发送ACK数据包;即A告诉B,是的,我总共收到了你发送给我N大小的数据包,现在断开你(B)到我(A)的连接。

    

tcp协议的简单理解的更多相关文章

  1. http协议跟tcp协议的简单理解

    在说明这两个协议之前,我们先简单说一下网络的分层. 1)应用层 支持网络应用,应用协议仅仅是网络应用的一个组成部分,运行在不同主机上的进程则使用应用层协议进行通信.主要的协议有:http.ftp.te ...

  2. 关于TCP\IP协议的简单理解

    一: HTTP是基于TCP协议的,TCP属于传输层.HTTP属于应用层. 另一个属于传输层的是UDP协议. 但HTTP是基于TCP这个协议,不是UDP这个协议. TCP相比于UDP,更安全,稳定.因为 ...

  3. 对TCP协议握手的理解(转)

    reference:https://www.cnblogs.com/awkflf11/p/9191708.html 目录: 31.Tcp握手的一些问题? 21.Tcp三次握手及SYN攻击: 四次握手? ...

  4. 基于Tcp协议的简单Socket通信实例(JAVA)

    好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...

  5. python3实现TCP协议的简单服务器和客户端

    利用python3来实现TCP协议,和UDP类似.UDP应用于及时通信,而TCP协议用来传送文件.命令等操作,因为这些数据不允许丢失,否则会造成文件错误或命令混乱.下面代码就是模拟客户端通过命令行操作 ...

  6. TCP协议的简单应用一

    TCP协议的应用,实现一个服务器处理多个客户端请求(向服务器发送消息,服务器接收到后以原消息返回给客户端.) 客户端类 import java.io.*; import java.net.Socket ...

  7. http、tcp和socket简单理解

    1.Http属于应用层,主要解决如何包装数据. 2.Tcp属于传输层,主要解决数据如何在网络上传输. 3.Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API) ...

  8. (转)tcp/ip协议的简单理解 -- ip报文和tcp报文的格式

    1.概念: TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程.入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地.出栈的过程,数据接收方每层不断地拆除首部 ...

  9. https协议的简单理解

    本片文章梳理三个知识点: 1.对称加密和非对称加密的区别 2.https协议的请求流程 3.http协议和https协议的区别 一.对称加密和非对称加密 对称加密:加密和解密使用同一密钥. 非对称加密 ...

随机推荐

  1. WPF: 自动设置Owner的ShowDialog 适用于MVVM

    原文:WPF: 自动设置Owner的ShowDialog 适用于MVVM 原文地址:http://www.mgenware.com/blog/?p=339 WPF中的Windows的ShowDialo ...

  2. Java 200+ 面试题补充 ThreadLocal 模块

    让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致. 本文是前文<Java 最常见的 200+ 面试题>的第一个补充模块. 1.ThreadLocal 是什么 ...

  3. 不要再被骗了------QQ盗号原理大揭秘

    前言 相信大家在懵懂无知的时候都有被盗号的经历吧,QQ胡乱的加好友,突然有个好友传了个文件给你,打开以后发现QQ竟然显示强制下线,然后再也上不去了QAQ,很明显,QQ号被人盗了.最近也是很多小伙伴私信 ...

  4. ES6类封装判断用户上下左右滑动事件!

    /** * param 原生js方式实现判断用户的滑动方向 * 返回1 向上 * 返回2 向下 * 返回3 向左 * 返回4 向右 */ class juedgeSlide { constructor ...

  5. uni-app 引入ecart

    https://blog.csdn.net/CherryLee_1210/article/details/83016706(copy) 1.首先在uni-app中不支持包下载所以得自己先新建一个项目, ...

  6. CKEditor 4.5 filetools, XHR.withCredentials = true,

    var editor = CKEDITOR.replace( 'editor1', { extraPlugins: 'uploadimage,filetools', imageUploadUrl: ' ...

  7. AngularJS 1.x系列:AngularJS过滤器(4)

    1. AngularJS过滤器(Filter)使用方法 AngularJS中过滤器(Filter)主要功能是格式化数据. AngularJS过滤器使用方法有3种: ◊ 在表达式{{}}中使用 ◊ 在指 ...

  8. Servlet生命周期和注解配置

    Servlet的生命周期和注解配置问题 /* Servlet? 运行在服务器上的小程序 定义浏览器访问到Tomcat的规则 一.生命周期? 1.创建 2.提供服务 3.被销毁 二.servlet3.0 ...

  9. 七、Java多人博客系统-2.0版本-docker部署

    docker是当下很热门的技术,是对之前的部署系统方式的彻底改变.之前部署系统,需要安装数据库.初始化数据库,安装jdk,配置jdk,部署应用程序,修改配置文件等,很繁琐.一般现场运维人员很难搞定,现 ...

  10. Nginx-Tomcat搭建负载均衡(转载)

    一.   工具 nginx-1.8.0 apache-tomcat-6.0.33 二.    目标 实现高性能负载均衡的Tomcat集群: 三.    步骤 1.首先下载Nginx,要下载稳定版: 2 ...