TCP/IP协议讲解
TCP/IP与OSI参考模型
应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、虚拟终端等。
应用层协议:两个主机的两个应用程序之间进行相互交流的数据格式。
运行在TCP协议上的协议:
1、HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
2、HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
3、FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输
…
运行在UDP协议上的协议:
1、BOOTP(Boot Protocol,启动协议),应用于无盘设备。
2、NTP(Network Time Protocol,网络时间协议),用于网络同步。
3、DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
4、DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作(运行在TCP和UDP协议上)
…
传输层:提供应用程序间的通信。
其功能包括:格式化信息流 以及 提供可靠传输。
网络层:标记了互联网上每一台主机的地址,负责相邻计算机之间的通信。
网络接口层:底层物理通路(线路)
TCP/IP协议简介
TCP/IP协议实际上是一个协议族。
TCP/IP协议主要由网络层的IP协议 和 传输层的TCP协议组成 。
TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
TCP协议
TCP协议是传输控制协议,工作在传输层。数据传输之前,客户端与服务器之间要建立连接,才可以传输数据。并且数据传输是有序的,要对数据进行校验,数据不会丢失。
TCP的三次握手和四次挥手
三次握手
1.客户端向服务端发送⼀个SYN=1(请求建立连接),并生成一个序列号seq=j。
2.服务端接收到SYN=1后,给客户端发送⼀个SYN=1与ACK=1;并将ack置为j+1;同时生成一个序列号seq=k。
3.客户端接收到会检查ack是否为j+1与ACK是否为1,如果是,则会给服务端发送一个ACK=1与ack=k+1,以及自己的序列号seq=j=1; 服务端接收到会检查ACK是否为1与ack是否为k+1,如果是则代表连接建立成功,两者间可以传递数据。
场景下分析过程,比如两人初次见面互相介绍(同上张三=客户端,李四=服务端):
1、张三:你好,我是张三
2、李四:你好,我知道你是张三,我是李四
3、张三:你好,我知道你是李四,我是张三
四次挥手
1.客户端向服务端发送FIN=1(请求关闭连接),并生成一个序列号seq=x。
2.服务端接收FIN后,向客户端发送ACK=1,ack=x+1,并生成序列号seq=y(客户端无数据发送,但服务器端需发送完最后的数据)。
3.服务端处理完所有数据后,向客户端发送FIN=1与ACK=1,ack=x+1,并生成序列号z,表示服务端现在可以断开连接。
4.客户端收到服务端的数据包后,会向服务端发送ACK=1,seq=x=1,ack=z+1(需要等待2MSL后才可断开连接)。
为什么是三次握手而不是两次握手?
因为如果客户端第一次发送的SYN报文因为网络问题而迟迟没有到达服务端,此时客户端会因为超时而重新发送一个新的SYN报文,此时上一个SYN报文在客户端就会失效,如果这里只采用两次握手,会因为客户端第二次发送SYN后,第一次发送的SYN又成功到达服务端,这时就会建立两个连接,产生问题。
为什么连接的时候是三次握手,关闭的时候却是四次握手?
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
UDP协议
用户数据报协议。传输方和接收方不需要建立连接,在传输数据之前没有明确的连接链路(即不是所有的数据都是通过一条链路传输)。因为数据的传输不是通过一条链路完成的,因此接收方接收的数据不一定按照发送数据的顺序接收,这样就可能造成数据包的丢失。
TCP与UDP比较
TCP | UDP | |
---|---|---|
连接性 | 面向连接 | 无连接 |
可靠性 | 可靠 | 不可靠 |
报文 | 面向字节流 | 面向报文 |
效率 | 传输效率低 | 传输效率高 |
连接对象 | 一对一 | 一对一,一对多,多对一,多对多 |
传输速度 | 慢 | 快 |
IP协议
IP是TCP/IP协议族中最为核心的协议,它提供无连接的不可靠的连接。所有的 TCP、UDP、ICMP及IGMP数据都以I P数据报格式传输。
IP地址
P地址是32位。需要注意的是,IP地址并不指向一台主机,它是指向一个网络接口。如果一台主句在多个网络上,它就会有多个网络接口,也就是有多个IP地址。因此路由器有多个IP地址。
MQTT
Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,MQTT 最大的优点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯协议, MQTT 在物联网、小型设备、移动应用等方面有广泛的应用。
MQTT消息格式
每条 MQTT 命令消息的消息头都包含一个固定的报头,有些消息会携带一个可变报文头和一个负荷。
格式:固定报头|可变报头|负载(消息体)
MQTT和TCP的区别
协议位置
TCP是传输层协议。
MQTT是基于TCP的应用层协议
协议定位
TCP设计考虑的是面向连接的、可靠的、基于字节流的传输层通信协议。
MQTT则是在低带宽高延迟不可靠的网络下进行数据相对可靠传输的应用层协议
设计思想
TCP的核心思想是分组交换。
MQTT的核心思想是简单并适应物联网环境。
传输单位
TCP的传输单位是packet,当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。
MQTT的传输单位是消息,每条消息字节上限在MQTT Broker代理服务器上进行设置,可以设置超过1M大小的消息上限。这样,就可以用一条消息就发送上千条采集的数据,或者比较大的设备阴影文件。
TCP/IP协议讲解相关推荐
- 基于TCP/IP协议 区别 GET和POST
基于TCP/IP协议讲解GET和POST的区别(转载于博客园) 在我大万维网世界中,TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象.但是如果路上跑的全是看起来一模一样的汽 ...
- 基于tcpdump实例讲解TCP/IP协议
前言 虽然网络编程的socket大家很多都会操作,但是很多还是不熟悉socket编程中,底层TCP/IP协议的交互过程,本文会一个简单的客户端程序和服务端程序的交互过程,使用tcpdump抓包,实例讲 ...
- TCP/IP协议中的一些常用端口简单讲解
(源自http://bbs.360.cn/3232114/17010996.html) 那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门.真正的房子只有 ...
- 走近TCP/IP协议
转载,来自:[url]http://pfw.sky.net.cn/article/4695.html[/url] 走近TCP/IP协议 1.TCP/IP是什么? TCP/IP协议(Transmissi ...
- 通过连接实例解读TCP/IP协议
通过连接实例解读TCP/IP协议 最近狂补基础,猛看TCP/IP协议.不过,书上的东西太抽象了,没有什么数据实例,看了不 久就忘了.于是,搬来一个sniffer,抓了数据包来看,呵呵,结合书里面得讲解 ...
- TCP/IP协议学习笔记
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...
- 一篇文章带你详解 TCP/IP 协议(下)
前面的第一二三章已在上篇讲解,还没看过的可以先看看:一篇文章带你详解 TCP/IP 协议(上) 本文继续讲解第四章. 四.网络层中的 IP 协议 IP(IPv4.IPv6)相当于 OSI 参考模型中的 ...
- TCP/IP协议与UDP协议的区别
首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇.里面 ...
- 网络协议:TCP/IP协议,你看懂了吗?
这样的TCP/IP协议,你看懂了吗? 本文章转载自https://blog.csdn.net/yulyu/article/details/69062288 精通 TCP/IP,熟练使用 Socket ...
- TCP/IP协议简介
TCP/IP协议简介<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&g ...
最新文章
- DNA sequencing technologies: 2006–2016
- JDK core dump分析
- 【北京】线下活动 | Azure SQL Database Managed Instance发布会
- d3.js 旋转图形_MATLAB 的图形处理
- .NET库和向后兼容的技巧——第2部分
- CocoaLumberjack
- HDU1492/The number of divisors(约数) about Humble Numbers
- 服务器端动态序列化与Unable to generate a temporary class报错
- php面试专题---1、php中变量存储及引用的原理
- yarn启动vue项目
- K8S---多节点部署---基于单节点(5)
- python怎么算列表的平方_Python中排序形式的元素的平方列表
- UGUI_03_补充之_Image的属性(image type这个属性simple、Sliced、tiled、filled样式详解)
- 2022年度软考考试时间表已公布
- Cygwin 下载安装
- rac集群状态中监听状态CHECK TIMED OUT处理
- 基于C++实现的图像检索系统
- GrabCut算法、物体显著性检测
- 为美术质量,如何建立RD团队
- ac远程web管理 r470gp tl_折腾家庭局域网,TP-LINK R470AC1200 晒单