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. JavaScript—面向对象开发详解和垃圾回收

    面向对象的概述 ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP). 面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是, ...

  2. 前端学习-基础部分-HTML

    开始今日份整理 1.HTML基础标签 1.1 标签 标签格式 HTML规定用英文尖括号,<>包起来,例如<html> HTML中通常标签成对出现,分为开始标签与结束标签,结束标 ...

  3. pydensecrf的使用

    参考:https://github.com/lucasb-eyer/pydensecrf 1.使用 对于图像来说,最简单的使用该库的方法是使用DenseCRF2D类: import numpy as ...

  4. 2019-03-23 shell练习,日志统计

    [2019-03-10 17:44:55]1234567 paid 10 10000 cat test.txt |tail -n +1 |sed 's/]/ ]g' |awk '{count[$3]+ ...

  5. koa2源码解读及实现一个简单的koa2框架

    阅读目录 一:封装node http server. 创建koa类构造函数. 二:构造request.response.及 context 对象. 三:中间件机制的实现. 四:错误捕获和错误处理. k ...

  6. 【P2015】二叉苹果树 (树形DP分组背包)

    题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 现在这颗树枝条太多了,需要剪枝.但是 ...

  7. React-使用装饰器

    create-react-app默认不支持装饰器的,需要做以下配置. 打开 package.json ,可以看到eject.运行 npm run eject 可以让由create-react-app创 ...

  8. 在 .NET Core 中结合 HttpClientFactory 使用 Polly(上篇)

    译者:王亮作者:Polly 团队原文:http://t.cn/EhZ90oq 译者序一:前两天写了一篇文章 .NET Core 开源项目 Polly 介绍,在写这篇文章查看 Polly 资料时,看到了 ...

  9. WSL、Git on Windows 、Putty等的创建的rsa秘钥与连接linux的使用。

    1. 在windows 上面可以使用多种方式创建公钥和私钥 这里从一开始说: 1.1 windows subsystem linux 的方式最简单了 cmd 命令行 下 进入 WSL 输入命令 bas ...

  10. GitHub最基本使用总结

    GitHub最基本使用入门 入门必看博客:https://mp.weixin.qq.com/s/LbzSwl4dYwrSPze0w10l8w 一.Git Linux安装 Git Linux安装教程:h ...