下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:
7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
6 表示层 例如XDR、ASN.1、SMB、AFP、NCP
5 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
4 传输层 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL
3 网络层 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
2 数据链路层 例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
1 物理层 例如线路、无线电、光纤、信鸽
1、TCP/IP连接
手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。
建立起一个TCP连接需要经过“三次握手”:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一
方主动关闭连接之前,TCP
连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”
2、HTTP连接
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP/IP协议之上的应用层协议,默认端口为80,8080。特点是无状态、求情数据的时候连接,数据回来时断开连接(非长连接)。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
http的报文传输的时ASCII码,主要分为三部分:请求行、请求头、请求体。
①请求行:http提交数据的两种方式有get请求,post请求,第一行包含三个信息:请求方式、url、http协议版本
GET /books/?sex-man&name=Professional HTTP/1.1
区别在于get的url参数可见,post的url参数不可见,另外在数据传输上,get通过拼接url进行传递参数,post通过body体传递参数。get请求时可以缓存的,post不可缓存。get请求页面时不产生影响,post会重新提交请求。get一般传输数据不超过2-4K,post请求数据传输的大小根据php.ini配置文件设定,也可以无限大。安全性方面,理论上post比get安全,毕竟url参数不可见,但也挡不住有的人进行抓包把post的参数泄露出来。本质区别在于get产生一个TCP数据包;post产生两个TCP数据包,对于get请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
②请求头
浏览器向服务器发送一些状态数据,标识数据等待。
一个信息一行,包括信息名:信息值 按行分隔
③请求主体
典型的就是post形式发送的表单数据
get没有请求主体部分。get请求的数据放在url上进行传递。
http的相应包括:响应行、响应头、响应体
响应行:如404请求的页面没找到、403没有权限、200请求成功
响应头:Content-Type:告诉浏览器接下来发送的相应主题数据是什么格式(ASCII)
Content-Length:响应主体数据长度
Date:响应时间。GMT时间
响应主体:主要的响应数据,在浏览器的主体区域显示的数据都是响应主体。
3、socket原理
socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。进行网络通信必须的物种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远程主机的IP地址,远程进程的协议端口。建立socket连接至少需要一对套接字,其中一个运行于客户端,另一个运行于服务端。
套接字之间的连接过程分为三个步骤:服务器监听、客户端请求、连接确认
4、socket连接与TCP/IP连接
创建socket连接时,可以指定使用的传输层协议,socket可以支持不同的传输层协议(TCP或UDP),当使用TCP进行连接时,该socket连接就是一个TCP连接
5、Socket连接与HTTP连接
由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。