前情提要:根据域名建立tcp链接之前要做两件事情,1 根据arp协议找到网管mac地址 2 通过dns服务器解析出域名的Ip地址,解析出域名的Ip地址之后就可以建立tcp链接了。

tcp协议三个特点:1 实现可高传输 2 实现流量控制 3 避免网络拥塞

tcp首部:

序号:表示传输数据第一个字节 是整个数据中的第几个字节

确认号:表示下一个链接过来的传输数据的第一个字节 是整个数据中的第几个字节

URG:值为1时表示数据不用进入TCP缓存池排队,直接发送给接收端

ACK:表示确认号码是否有效,0无效 1有效

SYN:值为1时表示发起会话请求的标识,其他为0后者不传(一般用于tcp握手阶段)

PSH:值为1时表示接收端要提前提交给应用程序,不要进入TCP缓存池

RST: 值为1时表示终端链接

RST:值为1时表示释放链接

TCP三次握手

为什么要进行三次握手?

  理论上2次握手已经可以判断网络是通畅的,但是为什么还要进行第三次呢?主要是为了解决当第一握手时,如果出现网络延迟时,客户端一段时间没有收到服务器的响应 就会再发一次握手信息,此时服务器会给客户端一个响应。后面客户端一次发送的握手信息,又传送到服务器,此时服务器会在给客户端一个响应,此时客户端就不会在处理这个响应,如果没有第三次握手,服务器还在等待着客户端传输数据,会很浪费服务器资源。

TCP四次挥手

tcp 链接图

Tcp协议介绍的更多相关文章

  1. Python基础教程之udp和tcp协议介绍

    Python基础教程之udp和tcp协议介绍 UDP介绍 UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但 ...

  2. 基于TCP协议的项目架构之Socket流传输的实现

    项目背景  某银行的影像平台由于使用时间长,服务器等配置原因,老影像系统满足不了现在日益增长的数据量的需求,所以急需要升级改造.传统的影像平台使用的是Oracle数据库和简单的架构来存储数据(视频.图 ...

  3. python中基于tcp协议的通信(数据传输)

    tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据 ...

  4. TCP/IP 协议介绍

    转自http://blog.jobbole.com/104886/ 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应 ...

  5. TCP协议RST:RST介绍、什么时候发送RST包

    TCP协议RST:RST介绍.什么时候发送RST包 RST标示复位.用来异常的关闭连接. 1. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包,发送RST. 2. 而接收端收 ...

  6. tcp协议以及socket介绍

    壹:tcp协议:可靠传输 一: 3次握手,建立链接:4次挥手,断开链接 3次握手,建立链接:图解 ,这样双向通路就建立完成了. 在建立链接时,并没有数据传输,所以中间两部可以合在一起,也就是3次握手, ...

  7. TCP/UDP 协议介绍

    TCP/IP五层网络结构模型 物理层:物理层建立在物理通信介质的基础上,作为系统和通信介质的接口,用来实现数据链路实体间透明的比特 (bit) 流传输.只有该层为真实物理通信,其它各层为虚拟通信 数据 ...

  8. 以太网接口TCP/IP协议介绍,说的很容易懂了

      以太网接口TCP/IP协议介绍,说的很容易懂了  TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列. TCP/IP协议栈(按TCP/IP参考模型划分) 应用层 FTP SMTP HTT ...

  9. 【网络协议】TCP协议简单介绍

        本文仅仅是对TCP协议做个简要的介绍.     TCP协议,即传输控制协议.与UDP协议同处于传输层,相同使用相同的网络层,但TCP提供了一种可靠的.面向连接的传输数据服务,它会在两个使用TC ...

随机推荐

  1. OC学习--面向对象的个人理解

    1. 什么是面向对象? 以下一段话是我在百度上找的解释: 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面 ...

  2. Maven中添加Jetty服务器配置

    <project> <!--其它配置--> <build> <plugins> <plugin> <groupId>org.mo ...

  3. 380-Xilinx Kintex UltraScale FPGA KCU1500 Acceleration Development Kit

    Xilinx Kintex UltraScale FPGA KCU1500 Acceleration Development Kit Product Description The Kintex® U ...

  4. vue 组件间传值方式

    /* 父组件给子组件传值 1.父组件调用子组件的时候 绑定动态属性 <v-header :title="title"></v-header> 2.在子组件里 ...

  5. PHP实现session共享

    通过修改PHP-FPM配置文件,实现session会话共享: - 配置PHP使用memcached服务器共享Session信息 - 客户端访问两台不同的后端Web服务器时,Session 信息一致 环 ...

  6. sudo、su、suid

    sudo 是一种权限管理机制,管理员可以授权普通用户去执行 root 权限的操作,而不需要知道 root 的密码.sudo 以其他用户身份执行命令,默认以root身份执行.配置文件/etc/sudoe ...

  7. xargs 将标准输入转换成命令行参数

    1. 命令功能 xargs 命令过滤器,接收管道或者标准输入传递的数据转换成xargs命令. 2. 语法格式 xargs [option] xargs  选项 参数 参数说明 -n 指定每行的最大参数 ...

  8. pycharm的一个bug,pycharm 在debug时,会运行项目下的所有文件,而不是当前文件

    pycharm的一个bug,pycharm 在debug时,会运行项目下的所有文件,而不是当前文件

  9. CMD批处理查看当前路径

    1.直接在CMD窗口查看 echo %cd% 2.建立批处理文件 @echo offecho 当前盘符:%~d0echo 当前盘符和路径:%~dp0echo 当前批处理全路径:%~f0echo 当前盘 ...

  10. JS中的继承(原型链、构造函数、组合式、class类)

    1.继承 应注意区分继承和实例化,实例化是生成一个对象,这个对象具有构造函数的属性和方法:继承指的应该是利用父类生成一个新的子类构造函数,通过这个子类构造函数实例化的对象,具有子类的属性和方法,同时也 ...