一:概述
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寻址,对外网数据包进行路由转发;传输层:定义端口,确认主机上应用程序的身份,并将数据包交给对应的应用程序;
应用层:定义数据格式,并按照对应的格式解读数据。
三:建立连接
1.三次握手机制
首先我们先来了解TCP报文段
ACK:确认序号有效
RST:重置连接
SYN:发起了一个新连接
FIN:释放一个连接
三次握手的过程(客户端我们用A表示,服务器端用B表示)
前提:A主动打开,B被动打开
------------------------人性化点讲------------------------------
三次握手流程
客户端发个请求“开门呐,我要进来”给服务器
服务器发个“进来吧,我去给你开门”给客户端
客户端有很客气的发个“谢谢,我要进来了”给服务器
2.四次挥手机制
主机A想要向主机B结束tcp长连接,第一次挥手发送fin请求,第一次挥手结束。
第二次挥手开始,主机B向主机A发送ack确认码,为fin号+1到这里第二次挥手结束。第三次握手开始主机B向A发送fin号结束。
第四次挥手开始主机A向B发送ack号为fin+1,这时tcp连接结束。
-----------------------------------------------------
四次挥手流程
客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他
服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走
服务器把门关上后,发个“我关门了”给客户端,然后等客户端走(尼玛~矫情啊)
客户端发个“我知道了,我走了”,之后自己就走了