概念
TCP/IP :1.用于因特网 (Internet) 的通信协议(对那些计算机必须遵守以便彼此通信的规则的描述);
2.是基于 TCP 和 IP 这两个最初的协议之上的不同的通信协议的大的集合(协议簇);
3.定义了主机如何连入因特网及数据如何在它们之间传输的标准;
4.TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们,IP 负责将包发送至接受者;
TCP和UDP的区别
TCP:面向连接的,可靠的;
UDP:无连接的,不可靠的,开销小传输速率高,实时性好;
OSI七层网络模型与TCP/IP四层模型

OSI是一个理想的参考模型,一般的网络系统只涉及其中的几层。
应用层(Application):为用户的应用程序提供网络服务(文件传输服务FTP、远程登录服务Telnet、电子邮件服务等);
表示层(Presentation):将应用层命令数据进行解释并传给会话层(编码、加解密、解压缩等);
会话层(Session):负责在网络中的两节点之间建立、维持和终止通信;
传输层(Transport):接收会话层数据,必要分割数据并交给网络层(TCP传输控制协议与UDP用户数据报协议);
网络层(Network):路由与寻径,建立网络连接和为上层提供服务;
数据链路层(Datalink):数据通道,在不可靠的物理线路上进行数据的可靠传递;
物理层(Physical):网络传输的物理媒体部分,如网卡,网线,集线器,中继器,调制解调器等;
TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中。
应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等;
传输层:TCP,UDP;
网络层:IP,ICMP,OSPF,EIGRP,IGMP;
数据链路层:SLIP,CSLIP,PPP,MTU;
三次握手
序号:
seq:32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记;
ack:确认序号,ack=seq+1(只有ACK标志位为1时,确认序号字段才有效);
标志位:
SYN(synchronous):发起一个新连接;
ACK(Acknowledgement):确认序号有效;
FIN:释放一个连接;

第一次握手:客户端A将标志位SYN置为1,并随机产生一个值seq=x发送给服务端,A并进入SYN_SENT状态,等待服务器B确认;
第二次握手:B收到数据由SYN=1知道是A请求建立连接(确认ACK=1,ack=x+1,seq=y),B进入SYN_RECV状态;
第三次握手:A收到B的确认(ACK=1,ack=y+1,seq=x+1),B接收并检查成功,则A和B进入ESTABLISHED状态完成三次握手;
三次握手之后客户端与服务器开始传输数据。
注:为什么要第三次握手?
防止已失效的连接请求又传送到服务器端,因而产生错误。(为了保证连接时双工的)
(A发送1失效,发送2,服务器确认2并建立连接后,突然1又传送到服务器的情况,此时A不对B的确认进行确认,则保证不开启无效连接)
四次挥手

第一次挥手:A发送连接释放报文,FIN=1,并进入FIN-WAIT-1(终止等待1)状态;
第二次挥手:B收到连接释放报文,发送确认报文,ACK=1,并进入CLOSE-WAIT(关闭等待)状态;
A收到B的确认请求,并进入FIN-WAIT-2(终止等待2)状态,此时A等待B发送连接释放报文并能正常接收数据;
第三次挥手:B发送连接释放报文,FIN=1,并进入LAST-ACK(最后确认)状态;
第四次挥手:A收到B连接释放报文,发出确认,ACK=1,并进入TIME-WAIT(时间等待)状态;
B收到A的确认,立即进入CLOSED状态,A经过2∗∗MSL(最长报文段寿命)的时间也进入CLOSED状态;
注:1.为什么要四次挥手?
B收到A的释放连接发送确认,此时可能还有数据需传给A所以不一起发送FIN,等数据传完才发FIN;
2.TIME_WAIT状态?
用来重发可能丢失的ACK报文
(假设网络不可靠,B发FIN,A发ACK丢失,B未收到则重发FIN,A-TIME_WAIT等待阶段又收到FIN可重发ACK)
寻址
IP地址:1.每个计算机必须有一个 IP 地址才能够连入因特网;
2.每个 IP 包必须有一个地址才能够发送到另一台计算机;
编址:TCP/IP 使用 32位二进制来为计算机编址,数字在0到255之前。(eg:112.65.143.26 -介于 0 到 255 之间的 4 个数字)
(1字节=8bit,所以编址采用4字节,一个字节取值在00000000、00000001....11111111,即0~255)
域名:用于 TCP/IP 地址的名字被称为域名(eg:w3school.com.cn,因为IP地址不好记)
(域名会被DNS程序翻译成数字,全世界有数量庞大的DNS服务器接入因特网,负责将域名翻译为 TCP/IP 地址以及更新)
协议族
TCP - 传输控制协议:1.用于从应用程序到网络的数据传输控制;
2.负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组;
IP - 网际协议:1.负责计算机之间的通信;
2.负责在因特网上发送和接收数据包;
HTTP - 超文本传输协议:1.负责 web 服务器与 web 浏览器之间的通信;
2.用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web 客户端返回内容(网页);
HTTPS - 安全的 HTTP:1.负责在 web 服务器和 web 浏览器之间的安全通信;
2.会用于处理信用卡交易和其他的敏感数据;
UDP -用户数据包协议:应用程序之间的简单通信;
SSL - 安全套接字层:用于为安全数据传输加密数据;
SMTP - 简易邮件传输协议:用于电子邮件的传输;
MIME - 多用途因特网邮件扩展:使 SMTP 有能力通过 TCP/IP 网络传输多媒体文件,包括声音、视频和二进制数据;
IMAP - 因特网消息访问协议:用于存储和取回电子邮件;
POP - 邮局协议:用于从电子邮件服务器向个人电脑下载电子邮件;
FTP - 文件传输协议:负责计算机之间的文件传输;
NTP - 网络时间协议:用于在计算机之间同步时间(钟);
DHCP - 动态主机配置协议:用于向网络中的计算机分配动态 IP 地址;
SNMP - 简单网络管理协议:用于计算机网络的管理;
LDAP - 轻量级的目录访问协议:LDAP 用于从因特网搜集关于用户和电子邮件地址的信息;
ICMP - 因特网消息控制协议:负责网络中的错误处理;
ARP - Address Resolution Protocol:用于通过 IP 来查找基于 IP 地址的计算机网卡的硬件地址;
RARP - Reverse Address Resolution Protocol:用于通过 IP 查找基于硬件地址的计算机网卡的 IP 地址;
BOOTP - Boot Protocol:用于从网络启动计算机;
PPTP - 点对点隧道协议:用于私人网络之间的连接(隧道);
参考
TCP三次握手与四次挥手

OSI七层网络模型
