TCP TCP/IP HTTP Socket URL 等一些概念

TCP/IP :

    实用性高于七层。广为流传,模型本身没有多大用处。它对服务,接口和协议没有明确的区分, 下图也是人们对它进行了改进,使它更像OSI.它的网络层只支持一种面向无连接的服务, 但传输层同时支持TCP(面向连接)和UDP(面向无连接)两种通信模式。

面向连接和无连接的概念:

面向连接:

   ->服务:是指用户首先必须先建立一个连接,然后用这个连接传输数据,再释放或关闭连接.如:一个管道,发送方把数据压入管道的一端, 接收方在另一端将它们取出来.基本保持顺序.

    ->协议: TCP, 全双工, 收发两端可以同时发送和接收.连接建立需要经过3次握手, 连接断开需要4次所致手.连接方式是点对点的, 无法做到多播.

面向无连接:

   ->服务:不保证传输的数据到达,且可能无序.每个报文都携带了完整的目标地址, 由系统的中间路由出去.

   ->协议:UDP,几乎是直接和网络层的IP协议通信.在两个进程通信之前没有握手的过程, 因此称为无连接服务.当一端需要发送报文时, 通过UDP套接字发送报文,UDP不保证有序, 不保证一定被接收端收到.且没有拥塞的控制.

1.应用层

应用层决定了向用户提供应用服务时的通信活动。

FTP(文件传输协议)和DNS(域名系统)域名系统提供域名到ip地址的解析服务、http协议都是处于该层。

2.传输层

传输层对上层应用层、提供处于网络连接中的两台计算机之间的数据传输。

传输层有两个不同的协议:TCP(传输控制协议)和UDP(用户数据报协议)、UDP不能保证数据无误的传输,协议不可靠。

3、网络层(IP)

用来处理网络上的数据包,数据包是网络传输的最小数据单位,该层规定了通过怎么样的路径到达对方计算机,并把数据包传送给对方。

与对方计算机之间通过多台计算机或者网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。

4、链路层(数据链路层、网络接口层)

用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、网卡,及光纤等物理课件部分。硬件上的范畴均在链路层的作用范围之内。

为了将数据准确无误的传递到目标处,TCP进行了三次握手,握手采用TCP的标志 -----SYN(synchronize)和ACK(acknowledgement)。

客户端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息,最后客户端再回传一个带ACK标志的数据包,代表握手结束。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)。

实例一:
IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

第一次握手:192.168.1.116发送位码syn=1,随机产生seq number=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立联机;
第二次握手:192.168.1.123收到请求后要确认联机信息,向192.168.1.116发送ack number=3626544837,syn=1,ack=1,随机产生seq=1739326486的包;
第三次握手:192.168.1.116收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,192.168.1.116会再发送ack number=1739326487,ack=1,192.168.1.123收到后确认seq=seq+1,ack=1则连接建立成功。

 

Socket

套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

通过下图可以看, 实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议:

URL和URI区别

URL是统一资源定位符,URI是统一资源标识符,URI用字符串标识某一互联网的资源,而URL标识资源的地点(互联网所处的位置)。

 

HTTP协议

1.HTTP协议请求报文

请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。

HTTP协议响应报文

响应报文是由西一版本、状态码以及结识状态码的短语,可选响应首部字段和实体组成的。

3.HTTP协议方法

GET:获取资源

用来请求访问已被URI标识的资源。制定的资源经服务器解析后返回响应内容,也就是说请求的资源是文本,那就保持原样返回。

POST:传输实体主体

虽然GET方法也能传输实体主体,但是一般不用GET方法进行传输,而是用POST,POST请求参数在body中,用户不可见,而get传输内容拼接在URL中,用户可见,安全性较差。

PUT:传输文件

用来传输文件,就像FTP协议的文件上传一样,要求在请求报文中主体重包含文件内容,然后保存到URI指定的位置。

但是PUT不带验证机制,存在安全问题,web网站一般不使用。

HEAD:获取报文首部

HEAD和GET一样,只是不返回报文主体,用于确认URI的有效性及资源更新的日期时间等。

DELETE:删除文件

与PUT相反的方法,用来按请求URI删除制定文件。

与PUT一样不带验证机制,存在安全问题,web网站一般不使用,使用必须配合程序验证机制一起使用。

OPTIONS:询问支持的方法

OPTIONS方法用来查询针对请求URI指定资源的支持方法。

TRACE:追踪路径

让web服务器端将之前的请求通信环会给客户端的方法。

CONNECT:要求用隧道协议连接代理

要求和代理服务器通信时建立隧道,实现隧道协议进行TCP通信,主要使用SSL(安全套接字)和TSL(传输层安全)协议把通信内容加密后经网络隧道传输。

Websocket

Websocket协议解决了服务器与客户端全双工通信的问题。

注:什么是单工、半双工、全工通信? 
信息只能单向传送为单工; 
信息能双向传送但不能同时双向传送称为半双工; 
信息能够同时双向传送则称为全双工。

websocket协议解析 
wensocket协议包含两部分:一部分是“握手”,一部分是“数据传输”。

WebSocket和Socket区别

可以把WebSocket想象成HTTP(应用层),HTTP和Socket什么关系,WebSocket和Socket就是什么关系。

HTTP 协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息。

WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。 
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值