当前位置:文档之家› TCPIP协议

TCPIP协议

一:概述
1.
互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。

最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(Packet),解决了子网内部的点对点
通信。
但是,以太网协议不能解决多个局域网如何互通,这时候就需要用到TCP/IP协议。
TCP/IP 通信协议是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。
您的浏览器与服务器都在使用 TCP/IP 协议
浏览器与服务器使用 TCP/IP 协议来链接因特网。
浏览器使用 TCP/IP 协议进入服务器,服务器使用 TCP/IP 协议来发送 HTML 到浏览器。
您的 E-Mail 使用 TCP/IP 协议
您的电子邮件也通过 TCP/IP 协议来发送和接收邮件。
因特网地址是 TCP/IP 协议
因特网地址比如 "42.120.45.233" 就是一个 TCP/IP 协议。

2. TCP提供面向连接的、可靠的字节流服务。面向连接意味着使用TCP协议作为传输层协议的两个应用
之间在相互交换数据之前必须建立一个TCP连接。TCP通过确认、校验、重组等机制为上层应用提供可
靠的传输服务。但是TCP连接的建立以及确认、校验等机制都需要耗费大量的工作并且会带来大量的开
销。由于TCP是面向连接的所以只能用于端到端的通讯。
UDP提供简单的、面向数据报的服务。UDP不保证可靠性,即不保证报文能够到达目的地。UDP适用于
更关注传输效率的应用。
每个计算机必须有一个 IP 地址才能够连入因特网。
每个 IP 包必须有一个地址才能够发送到另一台计算机。

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网
络安全具有极其重要的意义。它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告
错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发
数据包等情况时,会自动发送ICMP消息。

DHCP 用于向网络中的计算机分配动态 IP 地址。
二:组成

首先我们梳理一下每层模型的职责:
链路层(网络接口层):对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据;
网络层:定义IP地址确认主机所在的网络位置,并通过IP进行MAC寻址,对外网数据包进行路由转发;
传输层:定义端口,确认主机上应用程序的身份,并将数据包交给对应的应用程序;
应用层:定义数据格式,并按照对应的格式解读数据。

然后再把每层模型的职责串联起来,用一句通俗易懂的话讲就是:
当你输入一个网址并按下回车键的时候,首先,应用层协议对该请求包做了格式定义;
紧接着传输层协议加上了双方的端口号,确认了双方通信的应用程序;
然后网络协议加上了双方的IP地址,确认了双方的网络位置;
最后链路层协议加上了双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据
帧,采用广播方式,通过传输介质发送给对方主机。
而对于不同网段,该数据包首先会转发给网关路由器,经过多次转发后,最终被发送到目标主机。
目标机接收到数据包后,采用对应的协议,对帧数据进行组装,然后再通过一层一层的协议进行解析,
最终被应用层的协议解析并交给服务器处理。
当通过http发起一个请求时,应用层、传输层、网络层和链路层的相关协议依次对该请求进行包装并
携带对应的首部,最终在链路层生成以太网数据包,以太网数据包通过物理介质传输给对方主机,对
方接收到数据包以后,然后再一层一层采用对应的协议进行拆包,最后把应用层数据交给应用程序处
理。
网络通信就好比送快递,商品外面的一层层包裹就是各种协议,协议包含了商品信息、收货地址、收
件人、联系方式等,然后还需要配送车、配送站、快递员,商品才能最终到达用户手中。
一般情况下,快递是不能直达的,需要先转发到对应的配送站,然后由配送站再进行派件。
配送车就是物理介质,配送站就是网关, 快递员就是路由器,收货地址就是IP地址,联系方式就是
MAC地址。
快递员负责把包裹转发到各个配送站,配送站根据收获地址里的省市区,确认是否需要继续转发到其
他配送站,当包裹到达了目标配送站以后,配送站再根据联系方式找到收件人进行派件。
有了整体概念以后,下面我们详细了解一下各层的分工。
三:建立连接
1. 三次握手机制
首先我们先来了解TCP报文段
ACK:确认序号有效
RST:重置连接
SYN:发起了一个新连接
FIN:释放一个连接
三次握手的过程(客户端我们用A表示,服务器端用B表示)

前提:A主动打开,B被动打开
------------------------人性化点讲------------------------------
三次握手流程
客户端发个请求“开门呐,我要进来”给服务器
服务器发个“进来吧,我去给你开门”给客户端
客户端有很客气的发个“谢谢,我要进来了”给服务器
2. 四次挥手机制

主机A想要与主机B进行TCP通信,首先他需要向B发送一个syn同步序列编号用来标记保持同步,到
这里第一次握手就结束了。
第二次握手开始,主机B向A发送一个syn同步序列号和ack确认号确认号为A主机发送的syn号+1,
到这里第二次握手结束。
第三次握手开始主机A向主机B发送ack确认码为主机B的syn号+1,到此为止三次握手结束进入
ESTABLISHED状态,开始进行数据传输。
主机A想要向主机B结束tcp长连接,第一次挥手发送fin请求,第一次挥手结束。
第二次挥手开始,主机B向主机A发送ack确认码,为fin号+1到这里第二次挥手结束。
第三次握手开始主机B向A发送fin号结束。
第四次挥手开始主机A向B发送ack号为fin+1,这时tcp连接结束。
-----------------------------------------------------
四次挥手流程
客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他
服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走
服务器把门关上后,发个“我关门了”给客户端,然后等客户端走(尼玛~矫情啊)
客户端发个“我知道了,我走了”,之后自己就走了

相关主题