核心提示:
网络分为物理层、数据链路层、网络层、
传输层、会话层、表示层,从底层到高层应用层。通过一个初步的了解,我知道IP协议对应于网络层和TCP协议对应于传输层,而HTTP协议对应于应用层,而31是从原来的。
网络从底部到顶部划分。
物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
通过初步了解,我知道IP协议对应于网络层,而TCP协议对应于传输层,HTTP协议对应于应用层。
实质上,三者没有可比性。
套接字是TCP/IP协议的封装和应用(在
程序员级别上)。
也可以说,TPC/IP协议是一种传输层协议,主要
解决网络中的数据传输问题。
HTTP是一个应用层协议,主要解决如何
打包数据。
关于TCP/IP和HTTP协议之间的关系,网络有一个相对容易理解的
介绍:
Ldquo;当我们传输数据时,我们只能使用(传输层)TCP/IP协议,但是在这种
情况下,如果没有应用层,我们就不能
识别数据内容。
如果要使传输数据具有意义,必须使用应用层协议。
有很多应用层协议,如HTTP、FTP、telnet等,也可以自己定义应用层协议。
Web使用HTTP协议作为应用层协议来封装HTTP
文本信息,然后使用TCP/IP作为传输层协议将其发送到网络。
关于插座,我们通常说些什么实际上,套接字是TCP/IP协议的封装。套接字本身不是一个协议,而是一个调用接口(API)。
通过套接字,我们可以使用TCP/IP协议。
事实上,套接字与TCP/IP协议之间没有必要的
连接。
设计了socket编程接口,希望能适应其他网络协议。
因此,套接字的出现只使程序员更方便地使用TCP/IP协议栈,是对TCP/IP协议的抽象。
因此,我们已经形成了我们所知道的一些最基本的
函数接口,如
创建、监听、连接、接受、发送、读取和写入等。
更容易理解网络是套接字和TCP/IP协议之间的一种关系。
TCP/IP仅仅是一个协议栈,与
操作系统的
运行机制一样,必须
详细实现,同时还提供外部操作接口。
这就像一个
操作系统,它提供了一个标准的编程接口,比如win32编程接口。
TCP/IP还为程序员提供了网络开发接口,这是socket编程接口。
关于TCP/IP协议,我想不出它的博大精深。只要查一下网上的信息和书籍和
文件的数量就可以了。
我要去买一些经典的书籍(如TCP / IP详解:第一和第二卷,卷三)进行
学习,今天是第一次总结基于TCP / IP协议和基于知识的
应用程序编程接口就说了很多HTTP和插座。
在CSDN更典型的描述:HTTP是汽车,提供包装或
显示数据的具体形式,插座是
发动机,提供了网络通信的能力。
事实上,传输层的TCP是基于网络层的IP协议,而应用层的HTTP协议是基于传输层的TCP协议,而套接字本身不是协议。如上所述,它只提供了TCP或UDP编程的接口。
下面是一些在笔试或面试中
经常遇到的重要概念,特此摘录和总结。
TCP连接的三次握手是什么
第一次握手:客户端发送SYN包(SYN = J)到
服务器,并进入syn_send状态,
等待服务器
确认;
第二次握手:当服务器接收到SYN包时,它必须确认客户的SYN(ACK = J + 1),并发送SYN包(SYN K),即SYN包。在这个时候,服务器进入syn_recv状态。
第三次握手:客户端接收服务器的SYN - ACK包,向服务器发送确认包ACK(ACK = K + 1),包被发送到服务器,客户端和服务器进入已建立的状态,三次握手完成。
数据包不包含在握手中,在三次握手之后,客户机和服务器开始发送数据。
在理想状态下,一旦建立TCP连接,TCP连接将保持,直到通信双方中的任何一方主动
关闭连接为止。
当连接断开时,服务器和客户端都可以
启动断开TCP连接的请求。断开的过程需要经过四次握手(过程不是精细编写的,也就是服务器与客户机之间的交互,最后是断开连接的决定)。
两。用套接字构建
网络连接的
步骤 建立套接字连接至少需要一个双插座,其中一个运行于客户端,称为ClientSocket,和其他运行在服务器端,称为ServerSocket。
套接字之间的连接过程分为三个步骤:服务器侦听器、客户端请求和连接确认。
1,服务器监控:服务器端套接字没有找到特定的客户端套接字,但处于等待连接的状态。它实时监视网络的状态,并等待客户端的连接请求。
2,客户端请求:指客户端的套接字提出一个连接请求,将要连接到套接字服务器端的
目标。
因此,客户端的套接字必须首先描述要连接的服务器的套接字,指出服务器套接字的
地址和端口号,然后将请求连接到服务器端套接字。
3、连接确认:当服务器套接字监听或接收到连接请求响应客户端套接字、客户端套接字请求时,要创建一个新
线程,将服务器套接字描述给客户机,一旦客户确认此描述,双方正式建立连接。
服务器端套接字继续处于监视状态,并继续接收来自其他客户端套接字的连接请求。
三、http链接的特点
HTTP协议,超文本传输协议,是Web网络的基础。它也是移动互联网中最常用的协议之一。HTTP协议是一种基于tcp协议的应用。
HTTP连接最显著的特点是服务器对客户端发送的每个请求发送响应,并在请求结束后主动释放连接;
四、TCP和UDP之间的差别最大,我觉得考试糟透了--)
1,TCP是一个面向链接的。虽然网络的不安全和不稳定特性决定了有多少握手不能保证连接的可靠性,但是TCP的三次握手在很大程度上是最低的,从而保证了连接的可靠性。
虽然UDP不是面向连接的数据传输,UDP在接收数据或发送确认
信号之前不互相连接,发送方不知道数据是否
正确接收,您当然不需要重复,因此UDP是不可靠连接的数据传输协议。
2,由于1的特性,UDP的成本较小,数据传输率较高。由于不需要确认发送和接收数据,UDP的实时
性能更好。
知道TCP和UDP之间的
区别,不难理解为什么使用TCP传输协议的MSN比UDP QQ传输文件慢,但不能说QQ通信是不安全的。
因为程序员可以手动验证UDP的发送和接收数据,例如,发送方将对每个包进行编号,然后由接收方验证它。
即便如此,UDP并未使用TCP(如在底层协议的封装中)。三次握手实现了tcp无法实现的传输效率。
1,TCP连接
了解socket连接,你必须先了解TCP连接,手机可以使用网络
功能,因为TCP / IP协议是在手机底部的实施,使移动终端通过
无线网络建立TCP连接,TCP协议可以对上层网络提供接口,使上层网络数据的传输是建立在无差别;网络;
建立TCP连接需要通过三次握手;
第一次握手:客户端发送SYN包(SYN = J)到服务器,并进入syn_send状态,等待服务器确认;
第二次握手:当服务器接收到SYN包时,它必须确认客户的SYN(ACK = J + 1),并发送SYN包(SYN K),即SYN包。在这个时候,服务器进入syn_recv状态。
第三次握手:客户端接收服务器的SYN - ACK包,向服务器发送确认包ACK(ACK = K + 1),包被发送到服务器,客户端和服务器进入已建立的状态,三次握手完成。
包不包括在握手,并三握手后,客户端和服务器开始发送数据,在理想状态下,一旦TCP建立连接,TCP连接将保持直到连接主动关闭任何一方的沟通。当连接断开,服务器和客户端均可以发起请求断开TCP连接。断开的过程需要经过四次握手(过程不是精细编写的,也就是服务器与客户机之间的交互,最后是断开连接的决定)。
2,http连接
HTTP协议,超文本传输协议,是Web网络的基础。它也是移动互联网中最常用的协议之一。HTTP协议是一种基于tcp协议的应用。
HTTP连接最显著的特点是服务器对客户端发送的每个请求发送响应,并在请求结束后主动释放连接;
1)在HTTP 1中,客户端的每个请求都需要
设置一个连接,并且在
处理请求后自动释放连接。
2)在HTTP 1.1中,可以在一个连接中处理多个请求,并且在发送下一个请求之前,可以在不等待请求结束的情况下重叠多个请求。
因为HTTP释放连接后自愿每个请求,因此,HTTP连接是短连接保持客户端程序的在线状态,需要我们不断的发起到服务器的连接请求。通常的做法是立即不需要任何数据,客户端也保持定期的服务器发送一个请求到保持联系;,服务器接收客户端的请求的答复,表明客户端在线;。如果服务器未能接收客户端的请求很长一段时间,它认为客户线下。如果客户长时间无法接收服务器的回复,他认为网络已经断开了。
3、插座原理
3.1插座(插座)的概念
Socket是通信的基石,是
支持TCP/IP协议的网络通信的基本操作单元,是网络通信过程中端点的抽象表示。它包含了五种必须用于网络通信的信息:用于连接的协议、
本地主机的IP地址、本地
进程的协议端口、远程主机的IP地址和远端进程的协议端口。
在应用层通过传输层,TCP会同时提供多个应用进程的并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区分不同的应用程序和连接,许多
计算机操作系统提供的套接字接口(插座)的应用相互
作用与TCP / IP协议。应用层与传输层可以使用socket接口,区分来自不同应用程序的通信或网络连接实现数据传输的并发服务。
3.2建立套接字连接
建立套接字连接至少需要一个双插座,其中一个运行于客户端,称为ClientSocket,和其他运行在服务器端,称为ServerSocket。
套接字之间的连接过程分为三个步骤:服务器侦听器、客户端请求和连接确认。
服务器监视:服务器端套接字没有找到特定的客户端套接字,但正在等待连接状态。它实时监控
网络状态,并等待客户端的连接请求。
客户要求:客户的套接字提出连接请求,和目标被连接在服务器端套接字。为此,客户端的套接字必须首先描述服务器的套接字,它想连接,点出地址和服务器套接字的端口号,然后连接请求到服务器端套接字。
连接确认:当服务器端套接字监听或连接请求响应客户端套接字接收客户端的socket请求,创建一个新线程,服务器套接字描述给客户,客户一旦确认这一描述,双方正式建立连接,服务器端套接字仍然是监控状态,继续从其它客户端套接字接收连接请求。
4,套接字连接和TCP连接
创建套接字连接时,可以指定使用的传输层协议。套接字可以支持不同的传输层协议(TCP或UDP)。当TCP协议用于连接时,套接字连接是TCP连接。
5,套接字连接和HTTP连接
因为套接字连接通常是TCP连接,一旦连接建立后,通信的双方都可以发送数据内容彼此直到双方是断开的。但在实际的网络应用中,服务器之间的通信的客户往往需要跨越多个中间节点,例如
路由器、
网关、防火墙大多数防火墙,
默认将关闭很长一段时间内连接的非活动状态的socket连接断开造成的,因此需要通过投票告诉网络连接是活动的。
HTTP连接使用请求-响应,和。这种
方法不仅在请求时建立连接,而且在客户机向服务器发送请求后
恢复数据。
在许多情况下,服务器需要推送数据给客户端积极保持客户端与服务器数据的实时
同步。如果双方建立一个socket连接,服务器可以向客户端发送数据;如果双方建立HTTP连接,服务器需要等待客户端发送一个请求发送数据到客户端,这样客户端发送到服务器的连接请求时,不仅可以保持在线,同时关于服务器是否有新的数据,如果有数据发送到客户端。