TCP/IP协议

1.什么是TCP/IP协议

1.1,TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。

2.组成

1.2.TCP/IP协议在一定程度上参考了OSI的体系结构。OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。但是这显然是有些复杂的,所以在TCP/IP协议中,它们被简化为了四个层次。
四个层次分别为:

  1. 应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。其中Http协议请求也是在这一层进行的。
  2. 传输控制层:作为TCP/IP协议的第二层,传输控制层在整个TCP/IP协议中起到了中流砥柱的作用。且在传输控制层中,TCP和UDP也同样起到了中流砥柱的作用。
  3. 网络层:在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能
  4. 网络接口层:在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

TCP特点:面向连接,可靠的传输协议

1.为什么是面向连接?因为在传输控制层中tcp协议经历三次握手后,双方就会建立连接,同时开辟资源为对方服务。
2.为什么是可靠的。因为在三次握手中确认机制是可靠的。经历三次握手后确认可靠之后,才能传输数据,传输完后,也会进行四次挥手

下面是如何进行三次握手的。

三次握手

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。

  1. 第一次握手::Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
  2. 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
  3. 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

简而言之,就是Client和Server建立连接时,client发送数据给server,必须先确定server能否正常联通,所以发送一个包过去,server接收到包,但是client不知道你有没有接到我的信息,所以server回一个包告诉client代表我接受到了,让client知道它可以联通,同时server此时也需要知道我发送的包client是否接到了,于是client再一次回一个包,代表自己也接收到了信息。确保双方联通之后,双方就可以开始传输数据了。

四次挥手

所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。

  1. 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
  2. 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
  3. 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
  4. 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

演示三次握手 四次挥手

首先我们在linux系统下,保证自己的网络能联通,即能ping通百度即可

ping www.baidu.com

使用命令:curl www.baidu.com
成功后会返回百度的界面,这里我们已经进行了完整的通信的过程–tcp协议的三次握手和四次挥手了。

为了更加清晰的了解三次握手和四次挥手,这里我们进行抓包操作。
一,输入命令:tcpdump -nn -i ens33 port 80
ens33:为你网卡,输入ipconfig可以查看
80:百度的端口号
输入之后得到如下界面,这里在等待申请访问80端口

二,另起一个服务开始请求百度,myLinux,输入命令:curl www.baidu.com

这时候我们看到之前的请求被抓到了,期间从请求到响应结束经历的三次握手和四次挥手以及传输数据的过程如下图。

HTTP协议

HTTP协议简介:

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统

主要特点

1.HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

2.HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

3.HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

以下图表展示了HTTP协议通信流程

网络通讯协议——TCP/IP协议相关推荐

  1. 网络基础知识-TCP/IP协议各层详解

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  2. 网络原理之TCP/IP协议

    文章目录 1.网络基础 1.1 认识IP地址 1.1.1概念 1.1.2 作用 1.1.3 格式 1.1.4 组成 1.1.5 分类 1.2 子网掩码 1.2.1 格式 1.2.2 作用 1.2.3 ...

  3. 网络编程入门 TCP/IP 协议 端口 IP 软件结构

    目录 一.软件结构 二.网络通信协议 三.协议分类: 四.网络编程三要素:协议,ip,端口号 1.协议 2.IP地址 3.IP地址分类 a.IPv4 b.IPv6 4.IP常用命令 1. 查看本机IP ...

  4. 网络协议——TCP/IP协议

    简介: TCP(传输控制协议)和 IP(网际协议)是两个独立且紧密结合的协议,负责管理和引导数据报文在 Internet上的传输.二者使用专门的报文头定义每个报文的内容.TCP 负责和远程主机的连接, ...

  5. 网络传输之TCP/IP协议族

    我们现实网络无处不在,我们被庞大的虚拟网络包围,但我们却对它是怎样把我们的信息传递并实现通信的,我们并没有了解过,那么当我们在浏览器中出入一段地址,按下回车这背后都会发生什么? 比如说一般场景下,客户 ...

  6. 网络协议:TCP/IP协议,你看懂了吗?

    这样的TCP/IP协议,你看懂了吗? 本文章转载自https://blog.csdn.net/yulyu/article/details/69062288 精通 TCP/IP,熟练使用 Socket ...

  7. 程序员必知必会网络传输之TCP/IP协议族,共864页的详解文档让你原地起飞!

    我们现实网络无处不在,我们被庞大的虚拟网络包围,但我们却对它是怎样把我们的信息传递并实现通信的,我们并没有了解过,那么当我们在浏览器中出入一段地址,按下回车这背后都会发生什么? 比如说一般场景下,客户 ...

  8. ISO/OSI网络体系结构和TCP/IP协议模型

    1. ISO/OSI的参考模型共有7层,由低层至高层分别为:物理层.数据链路层.网络层.传输层.会话层.表示层. 应用层.各层功能分别为: (1)物理层 提供建立.维护和拆除物理链路所需的机械.电气. ...

  9. 【网络基础】TCP/IP协议详解

    TCP/IP协议定义 TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是在多个不同网络间实现信息传输的通信协议.是 ...

  10. 面向连接的传输层协议——TCP/IP协议

    TCP/IP 协议 TCP:Transmission Control Protocol 传输控制协议 TCP/IP协议是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP ...

最新文章

  1. 回顾inputstream和outputstream
  2. Windows Live Writer 配置报407 Proxy Authentication Required错误
  3. mysql非安装_mysql 非安装版的配置
  4. C语言运行gis空间叠加分析,GIS空间叠加分析与缓冲区分析.doc
  5. FPGA和CPLD的比较
  6. “哇靠”,小米最AI手机MIX 2S发布了
  7. openfire User Service 和删除分组的方法
  8. 分子排列不同会导致_第五种手性——体手性的提出与体手性分子的合成
  9. 优化理论08-----约束优化的最优性条件、拉格朗日条件、凸性、约束规范、二阶最优性条件(下)
  10. 2007电脑报专用版SN(备忘之用)
  11. 机器学习系列文章【转自我的新浪博客】
  12. js-简易幻灯片制作
  13. DNX451 与 DNXCORE50 获取当前应用程序目录
  14. cocos creator 插件开发
  15. 学习半年Java的初次经验分享
  16. 【Go语言实战】13. Go语言context标准库(下)
  17. 为什么不建议在MySQL中使用 utf8?
  18. Spark入门(三)——SparkRDD剖析(面试点)
  19. java+ssh+mysql生鲜商城
  20. Python_OpenCV调用摄像头完成人脸识别

热门文章

  1. FPGA 20个例程篇:7.FLASH读写断电存储
  2. win7下安装sqlServer2000
  3. 快播创始人微博晒出团队合照
  4. Vijos P1423 最佳路线
  5. 提高计算机访问硬盘的速度慢,嫌电脑速度不够快?教你5招提升硬盘性能!
  6. 姓名常用汉字代码查询器
  7. 西威驱动板PV33-4 电源驱动板图纸 37千瓦左右基本一样 文件发送非实物
  8. 互联网摸鱼日报(2022-10-17)
  9. QT打造图片直播服务器
  10. c语言5的阶乘流程图_求n流程图(求n的阶乘的算法框图)