TCP/IP|TCP/IP 协议族

一、 计算机网络体系结构分层
TCP/IP|TCP/IP 协议族
文章图片
计算机网络体系结构分层 物理层作用:定义一些电器,机械,过程和规范,确保原始的数据可在各种物理媒体上传输;
数据传输基本单位:bit/比特;
设备:中继器(放大器)和集线器;
备注:没有寻址的概念;
-----------------------------------------------------------------------
数据链路层作用:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等;
典型协议:以太网;
数据传输基本单位:frame(帧);
设备:网桥和交换机;
备注:交换机通过MAC地址转发数据,逻辑链路控制;
-----------------------------------------------------------------------
网络层作用:定义一个逻辑的寻址,选择最佳路径传输,路由数据包;
典型协议:IP,ICMP,ARP,BOOTP;
数据传输基本单位:packet/数据包;
设备:路由器;
-----------------------------------------------------------------------
传输层作用:负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
典型协议:TCP,UDP,port(65535个端口);
数据传输基本单位:fragment 段;
设备:网关;
-----------------------------------------------------------------------
会话层作用:控制会话,建立管理终止应用程序会话;
NFS,SQL,ASP,PHP,JSP,RSVP(资源源预留协议);
-----------------------------------------------------------------------
表示层作用:对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解;
如:ASCII,JPEG,PNG,MP3,WAV,AVI;
备注:表示层的数据转换包括数据的加密、压缩、格式转换等;
-----------------------------------------------------------------------
应用层作用:控制应用程序,为操作系统或网络应用程序提供访问网络服务的接口;
典型协议:HTTP,TELNET,SSH,FTP,SMTP,DNS;
数据传输基本单位:报文;
二、TCP/IP 协议族基础 TCP/IP 是不同的通信协议的大集合。
TCP/IP|TCP/IP 协议族
文章图片
TCP/IP 协议族 TCP - 传输控制协议(Transmission Control Protocol)
TCP 用于从应用程序到网络的数据传输控制。
TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。
IP - 网际协议(Internet Protocol) IP 负责计算机之间的通信。
IP 负责在因特网上发送和接收数据包。
HTTP - 超文本传输协议(Hyper Text Transfer Protocol) HTTP 负责 web 服务器与 web 浏览器之间的通信。
HTTP 用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web 客户端返回内容(网页)。
HTTPS - 安全的 HTTP(HTTP Secure) HTTPS 负责在 web 服务器和 web 浏览器之间的安全通信。
作为有代表性的应用,HTTPS 会用于处理信用卡交易和其他的敏感数据。
SSL - 安全套接字层(Secure Sockets Layer) SSL 协议用于为安全数据传输加密数据。
SMTP - 简易邮件传输协议(Simple Mail Transfer Protocol) SMTP 用于电子邮件的传输。
MIME - 多用途因特网邮件扩展(Multi-purpose Internet Mail Extensions) MIME 协议使 SMTP 有能力通过 TCP/IP 网络传输多媒体文件,包括声音、视频和二进制数据。
IMAP - 因特网消息访问协议(Internet Message Access Protocol) 【TCP/IP|TCP/IP 协议族】IMAP 用于存储和取回电子邮件。
POP - 邮局协议(Post Office Protocol) POP 用于从电子邮件服务器向个人电脑下载电子邮件。
FTP - 文件传输协议(File Transfer Protocol) FTP 负责计算机之间的文件传输。
NTP - 网络时间协议(Network Time Protocol) NTP 用于在计算机之间同步时间(钟)。
DHCP - 动态主机配置协议(Dynamic Host Configuration Protocol) DHCP 用于向网络中的计算机分配动态 IP 地址。
SNMP - 简单网络管理协议(Simple Network Management Protocol) SNMP 用于计算机网络的管理。
LDAP - 轻量级的目录访问协议(Lightweight Directory Access Protocol) LDAP 用于从因特网搜集关于用户和电子邮件地址的信息。
ICMP - 因特网消息控制协议(Internet Control Message Protocol) ICMP 负责网络中的错误处理。
ARP - 地址解析协议(Address Resolution Protocol) ARP - 用于通过 IP 来查找基于 IP 地址的计算机网卡的硬件地址。
RARP - 反向地址转换协议(Reverse Address Resolution Protocol) RARP 用于通过 IP 查找基于硬件地址的计算机网卡的 IP 地址。
BOOTP - 自举协议(Boot Protocol) BOOTP 用于从网络启动计算机。
PPTP - 点对点隧道协议(Point to Point Tunneling Protocol) PPTP 用于私人网络之间的连接(隧道)。
三、传输层中的 TCP 协议、UDP 协议及端口 1、TCP 与 UDP 的区别:
1)TCP基于连接,UDP无连接;
2)TCP对系统资源的要求较多,UDP少;
3)UDP程序结构较简单;
4)TCP具有流量控制模式,UDP是数据报模式;
5)TCP保证数据正确性,UDP可能丢包;
6)TCP保证数据顺序,UDP不保证;
7)TCP用于在传输层有必要实现可靠传输的情况,UDP主要用于那些对高速传输和实时性有较高要求的即时通信或广播通信。
使用TCP的协议:FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,用于接收邮件)、HTTP协议等。
使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP。
2、TCP三次握手与四次挥手 1)三次握手
TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。


TCP/IP|TCP/IP 协议族
文章图片
三次握手 第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认。
第二次握手:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。
第三次握手:客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。
三次握手的特点:没有应用层的数据;SYN这个标志位只有在TCP建产连接时才会被置1;握手完成后SYN标志位被置0;
2)四次挥手
四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。
由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。


TCP/IP|TCP/IP 协议族
文章图片
四次挥手 中断连接端可以是客户端,也可以是服务器端。
第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。
第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态,继续等待服务器端的FIN报文。
第三次挥手:当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。
第四次挥手:客户端收到FIN=N报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。
上面是一方主动关闭,另一方被动关闭的情况,实际中还会出现同时发起主动关闭的情况。
3)名词解释

ACKTCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性。
FIN发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1。
SYN同步序列号,TCP建立连接时将这个位置1。
3、端口 数据链路和 IP 中的地址,分别指的是 MAC 地址和 IP 地址。前者用来识别同一链路中不同的计算机,后者用来识别 TCP/IP 网络中互连的主机和路由器。在传输层也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。
四、应用层中的 HTTP 协议 五、网络层中的 IP 协议

    推荐阅读