什么是TCP/IP模型?
TCP/IP模型是一系列网络协议的总称,这些协议的目的,就是使计算机之间可以进行信息交换。
所谓"协议"可以理解成机器之间交谈的语言,每一种协议都有自己的目的。TCP/IP模型一共包括几百种协议,对互联网上交换信息的各个方面都做了规定。
TCP/IP三次握手
1. 第一次握手
请求端(通常为客户)发送一个SYN段指明客户打算连接的服务器端口,以及初始序号(ISN)。这个SYN段为报文段1。
2. 第二次握手
服务器发回包含服务器初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号(ACK)设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。
3. 第三次握手
客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(报文段3)
四次挥手
建立一个连接需要三次握手,而终止一个连接要经过4次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递),因此每个方向上必须单独的进行关闭。
1. 第一次挥手
客户端发送一个FIN(报文段4)
2. 第二次挥手
服务器收到这个FIN, 它发回一个ACK, 确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN也占用一个序号.
3. 第三次挥手
TCP服务器向应用程序,发送一个文件结束符(FIN)
4. 第四次挥手
发送一个确认信号(ACK),将确认信号设置为收到序号加1

TCP的六种状态
SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急)
OSI七层模型 和 TCP/IP四层模型
应用层
针对特定应用的协议。例如电子邮件协议Email, 远程登录协议SSH, 文件传输协议FTP, 网络请求协议HTTP。
表示层
它的主要功能之一就是为异种机通信提供一种通用语言,以便能进行相互操作。表示层是处理所有与数据表示及运输有关的问题。如转换、加密和压缩。如果你想要用尽量少的词来记住表示层那就是一种通用的数据格式。
会话层
是在通信双方建立通信时创建、维持和之后终止或断开连接的地方。
传输层
有了Mac地址和IP地址我们就能在任意两台电脑上进行通讯。那么问题来了,同一台主机上的不同应用程序是如何区分的呢?
端口
它实际上是每个使用网卡程序的编号。端口是从0到65535的一个整数,正好16个二进制位。0 - 1023被系统占用,我们只能使用大于1023的端口号。
传输层的作用
创建端口到端口通讯,相比网络层是创造主机到主机的通讯。Unix系统就是把主机 + 端口叫做 ”套接字“,也叫”Socket“.
UDP协议
UDP是一个非连接的协议,传输数据之前源端和终端不建立连接。UDP协议的优点是容易实现,简单,传输效率高。可是缺点就是可靠性差,一旦数据发出去即使发生丢失也不会重新发送,而且并不知道对方是否真的收到了数据。
TCP协议
TCP协议,传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层通信协议。
网络层
它的作用是区分哪些计算机在同一个子网(局域网),这个套机制就叫做网络地址,也就是ip地址。
IP协议
TCP/IP体系中的网络层协议。IP是整个TCP/IP协议族的核心,也是构成互联网的基础。IP位于TCP/IP模型的网络层(相当于OSI模型的网络层),对上可载送传输层各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。
数据链数层
单纯的 0 和 1 是没有任何意义的,必须规定特定的解读方式。例如:多少个电信号为一组,每个信号位是什么意义。这就是数据链路层的作用,它规定了 0 和 1 的分组方式。
以太网协议
早些时候每家公司都拥有自己的电信号分组方式。后来出现了“以太网协议”逐渐占据了主导地位。“以太网”规定,一组电信号构成一个数据包,叫做“帧(Frame)”。每一帧分成两个部分,标头(Head)和数据(Data)。
Mac地址
以太网规定,接入网络的所有设备都必须具有“网卡”接口。“网卡”的地址就是数据包的发送地址和接收地址,也就是“Mac地址”。每块网卡在出厂的时候都拥有有一个世界上独一无二的Mac地址,长度是48位的二进制,通常用12位16进制数表示。前六个16进制数是厂商编号,后6个是该厂商的网卡流水号,有了Mac地址就可以定位网卡和数据包的路径了。
物理层
把电脑连接起来的物理手段。例如:光缆、电线、双绞线、无线电波等。它主要规定了网络的一些电气特性,作用是传输 0 和 1 的电信号。
说明
在TCP/IP四层模型中,应用层、表示层、会话层统一为应用层。在这个模型中,主要是以通信为核心,所以也没余物理层。