1.TCP是面向连接的。就是当你想要开始传递数据的时候,之前应该先把连接建立起来。它不像UDP协议,可以直接发送数据。
2.TCP提供可靠的数据传输,实现了丢失重传。RTT的估算。
3.TCP通过给所发送数据的每一个段管理一个序号进行排列。每一个包都会有一个序列号,由底层内部按照序列号排序之后,再行发送。
4.TCP提供流量控制和拥塞控制:报告窗口、拥塞窗口。
5.TCP的连接是全双工的,同时发送和接受数据可以同时进行不受干扰。

二:TCP协议头窗口分析


包头内容:
1.源端口:我们再开发的过程中不是特别关注的。如果你是客户端的话,在建立连接之后根本就不知道你的源端口是什么。
2.目的端口:就是我们要连接的端口,如80端口。你肯定会发送一个TCP包,包含了80端口的连接请求。
3.序号:在我们确认保证这个数据是有序的,在三次握手之后才开始向下排的。
4.数据偏移:因为我们下面又长度可变的选项,我们要知道从哪边开始是数据,说白了就是整个tpc头的大小。
5.20字节的固定首部:注意是固定的,
6.报协议类型:URG,ACK,PSH等等标识位,来标识你这个包是什么类型的。
7、窗口:窗口大小,为什么要理解窗口,因为我们要知道TCP是怎么进行排序的,怎么实现数据的可靠性的,都是通过窗口的特性实现的。
8.校验和:比如你发送一个数据过去,你怎么保证数据是和你发送的一样的。当然有可能不一致,概率极低。
9.紧急指针:指向紧急数据最后一字节的位置。
10.选项:比如长度可变。

总结:整个TCP协议是TCP数据部分,加上TPC头部,整个组成IP的部分,IP的部分加上IP头部。以上就是TCP/IP协议。

三:重点再讲下窗口

窗口:就是发送方和接收方都会存在一个窗口。也就是发送方会确定这个窗口里面的数据什么时候往前移。
接收方一样,等这个窗口把数据都接收完了才往后移。然后可以接收新的数据进来,这个窗口一般指缓冲大小。而且这里面会去做最重要的事情,排序之后,保证数据传输的有序性之后,再将数据移交。

C++socket编程(三):3.1 TCP/IP协议特点相关推荐

  1. 计算机网络基础(三次握手|TCP/IP协议|五层协议栈|网络安全)

    目录 一.三次握手 1.1 三次握手过程 1.2 为什么不两次握手 1.3 四次握手 1.4 常见问题 1.5 TCP的有限状态机 二.TCP与UDP 2.1 TCP/IP协议簇 2.2 TCP与UD ...

  2. 网络编程基础一:TCP/IP 协议详解

    前言 我们知道两个进程如果需要进行通讯最基本的一个前提[能够唯一的标示一个进程],在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候 ...

  3. 基于tcpdump实例讲解TCP/IP协议

    前言 虽然网络编程的socket大家很多都会操作,但是很多还是不熟悉socket编程中,底层TCP/IP协议的交互过程,本文会一个简单的客户端程序和服务端程序的交互过程,使用tcpdump抓包,实例讲 ...

  4. http、TCP/IP协议与socket之间的区别

    网络由下往上分为:  www.2cto.com   物理层--                       数据链路层-- 网络层--                       IP协议 传输层-- ...

  5. 面试篇-- Http、TCP/IP协议与Socket之间的区别

    网络由下往上分为: 物理层-- 数据链路层-- 网络层-- IP协议 传输层-- TCP协议 会话层-- 表示层和应用层-- HTTP协议 1.TCP/IP连接 手机能够使用联网功能是因为手机底层实现 ...

  6. 计算机原理---什么叫协议?主流协议族TCP/IP协议与HTTP协议的联系及区别

    文章目录 一. 背景 1. 名词定义 2. 协议选择 3. 常用协议 二. 协议协议,究竟什么是协议? 1.举个例子 2.计算机网络一般分为5层 应用层 传输层 网络层 数据链路层 物理层 三.总结 ...

  7. TCP/IP协议三次握手与四次握手流程解析

    原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...

  8. 网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析

    一.网络协议定义 1.OSI参考模型:全称(Open System Interconnection), 开放式系统互联参考模型.是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为七层,只要目的是为 ...

  9. 网络编程3之TCP/IP协议

    在TCP/IP协议中,最重要的协议是[TCP.UDP.IP]协议 1.TCP/IP协议特点 1)Internet上不同系统之间互联的一组协议2)为分散和不同类型的硬件提供通用的编程接口.3)TCP/I ...

最新文章

  1. 如何用TF Object Detection API训练交通信号灯检测神经网络?
  2. Android JNI开发入门之一
  3. 微软推Windows 10新内测版 仍以“修复”为特色
  4. [转载]编译中的常见分析方法
  5. MapReduce-流量统计求和-排序-Mapper和Reducer编写
  6. HDU - 4641 K-string(后缀自动机)
  7. linux下svn(subversion)服务端添加工程及配置权限
  8. 简单聊聊Python协程
  9. 谈谈R中的乱码(一)
  10. 程序员必读书籍及导读指南
  11. C程序设计语言——基础概念
  12. Exynos4412——LCD驱动
  13. 一份优秀的前端开发工程师简历是怎样的?
  14. 华为q1设置虚拟服务器,华为路由Q1的上网设置教程
  15. linux rar和zip工具
  16. 推荐一个好用的在线pdf压缩工具
  17. 用MATLAB程序控制伺服电机,使用MATLAB和Arduino开发板进行步进电机控制
  18. meso-四(4-N,N,N-三甲基氨基苯基)卟啉(TTMAPP);[5,15-二乙炔基-10,20-二(3,4,5-三(十六烷氧基)苯基)卟啉]锌(DBTCPP-Zn);锌卟啉(TPP-Zn)科研级
  19. OpenCV2:imread 和 imwrite
  20. PCM音频数据音量大小调节

热门文章

  1. Django 2.0 学习(12):Django 模板语法
  2. MySQL知识树 集合操作
  3. linux网络编程之socket编程(六)
  4. 轮子来袭 vJine.Core Orm 之 01_快速体验
  5. 维护UI状态的最懒惰方法
  6. vue接收索引_前端开发:Vue中findIndex() 方法的使用
  7. win7查看tomcat端口_win7
  8. python selenium 点击加载更多_如何等待页面加载,然后按selenium中的“加载更多”按钮?...
  9. java空白页,[求教]JSP页面显示为空白页,请高手赐教!
  10. Web服务器与Servlet容器初步认识