网络协议相关总结,TCP/IP,UDP

TCP/IPTransmission Control Protocol/Internet Protocol

TCP协议和IP协议组成,TCP/IP协议是一组TCP协议,IP协议,UDP协议,ICMP协议及其它协议组成的协议组。

传统的7层是:物理层,数据链路层,网络层,传输层,话路层,表示层,应用层;而TCP/IP采用了4层结构:

a、应用层(应用程序间的沟通层,如简单的电子邮件传输SMTP/POP3,文件传输协议FTP,网络远程访问协议Telnet,超文本传输协议http

b、传输层(这一层提供节点间的数据传输服务,如传输控制协议TCP,用户数据报协议UDP等,TCPUDP给数据包加入要传输的数据并把他传输到下一层,并确定数据已经被送达并接收)

c、互联网层(负责基本的数据封装传送功能,让每一个数据包都能达到目的主机,但不检测是否被接收,如网际协议IP)

d、网络接口层:负责数据帧的发送和接收,帧是独立的网络信息传输单元。网络接口层将帧放在网上,或从网上把帧取下来。

HTTP协议

http:超文本传输协议(HTTP)是应用层协议,由于其简捷、快速的方式,适用于分布式和合作式超媒体信息系统。HTTP 允许使用自由答复的方法表明请求目的,它建立在统一资源识别器(URI)提供的参考原则下,作为一个地址(URL)或名字(URN),用以标志采用哪种方法,它用类似于网络邮件和多用途网际邮件扩充协议(MIME)的格式传递消息。HTTP 是一种请求/响应式的协议

http协议的特点:

1、  支持客户端/服务器模式

2、  简单快速:客户端向服务端请求时只需传请求的方法和路径,请求的方法常有:

:put:很少见,与post相似,与post的区别是它指定资源的存储位置;而post没有;

删:delete:删除一个资源,很少见,amazonS3云服务器中就用到这个方法

改:post:使用广泛,几乎所有的提交操作都是靠这个来完成的

查:get:最常见的,本质就是发送一个请求取得服务器上的资源;

由于http协议简单,使用http服务器的程序规模小,因而通信速度很快;

3、  灵活:http允许传输任意类型的数据;正在传输的类型由content-type加以标记

4、  无连接:限制每次连接只处理一次请求,服务器处理完客户端请求,并收到客户端应答后立即断开连接,这种方式节省传输时间

5、  无状态:对事务处理没有记忆能力,如果后续要再处理前面的数据必须重传,这样可能导致每次传输的数据量增大;另一方面在服务器不需要先前的信息时它的应答就较快

网页常见错误代码:

总分:

1xx:表示请求已经成功接收,继续处理

2xx:  表示请求已经成功接收,理解,接受

3xx:要完成请求必须更进一步处理

4xx:客户端错误,请求有语法错误或请求无法实现

5xx:服务器错误,服务器未能实现合法的请求

细分:

200:成功相应,所请求的资源发送回客户端

400   Bad Request 请求出现语法错误

403   Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。 

404   Not Found 无法找到指定位置的资源。这也是一个常用的应答。 

405   Method Not Allowed 请求方法(GETPOSTHEADDeletePUTTRACE等)对指定的资源不适用。 

500   Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。 

505   HTTP Version Not Supported

服务器不支持请求中所指明的HTTP版本。 

什么是TCP的三次握手

第一次握手:客户端发送syn(第一次请求的数据包);并进入syn_send状态,等待服务器确认;

第二次握手:服务器接收到syn(syn+ack),必须确认客户的syn包,同时自己也发送一个syn包,此时服务器进入syn_recv状态

第三次握手:客户端收到服务器的syn+ack包,向服务器发送确认包ack,此包发送完毕客户端与服务器端建立连接进入established状态;完成三次握手

握手过程中传送的包里不包含数据,三次握手完毕客户端和服务器端才正式建立连接;在通信双方任何一方主动关闭连接之前,TCP连接都将一直保持下去;服务器端和客户端均可以发起断开连接的请求,端口连接需要四次握手;

Socket建立网络连接的步骤:

Socket建立连接需要一套套接字,运行在客户端的叫ClientSocket,运行在服务器端的叫ServerSocket;;建立连接分为三个步骤:服务器监听,客户端请求,连接确认

1。服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。  

2。客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。  

3。连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

TCPUDP的区别:

TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议

也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好

UDP用于网络游戏,视频聊天,语音聊天这种应用,由于用户对数据实时性的要求很高,而对数据完全正确性的要求又有所降低。(比如,聊天的时候,如果有个别数据包丢失或者有误,充其量你就得到一些声音不清楚,不会影响聊天的体验。) UDP协议就诞生在这种需求下。

UDP协议被广泛的使用在对网络数据传输实时性很高而对数据准确性要求不是非常高的场合。

 

你可能感兴趣的:(http,socket,TCP/IP)