Socket机制概念讲解说明

44 篇文章 4 订阅

 

Socket两个基本概念:客户方和服务方。当两个应用之间需要采用SOCKET通信时,首先需要在两个应用之间(可能位于同一台机器,也可能位于不同的机器)建立SOCKET连接,发起呼叫连接请求的一方为客户方,接受呼叫连接请求的一方成为服务方。客户方和服务方是相对的,同一个应用可以是客户方,也可以是服务方。

我们已经知道网络中的进程是通过 socket 来通信的,那什么是 socket 呢?


首先明确Socket在网络模型中哪里:是应用层与传输层之间的桥梁

image回顾一下网络模型:OSI七层网络模型:

1.应用层.

2.表示层.

3.会话层.

4.传输层.

5.网络

层.

6.数据链路层.

7.物理层

TCP/IP四层网络模型:应用层.传输层.网络层,网络接入层

HTTP协议:属于应用层面向对象的协议(超文本传输协议),常基于TCP连接方式,特点是:

1.支持客户/服务端模式

2.简单快捷灵活

3.客户端发送的每次请求都需要服务器回

送响应,请求结束后主动释放连接,俗称”短连接”

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状态,完成三次握手。

(关于四次挥手

先由客户端向服务器端发送一个FIN,请求关闭数据传输。

当服务器接收到客户端的FIN时,向客户端发送一个ACK,其中ack的值等于FIN+SEQ

然后服务器向客户端发送一个FIN,告诉客户端应用程序关闭。

当客户端收到服务器端的FIN是,回复一个ACK给服务器端。其中ack的值等于FIN+SEQ

UDP协议:用户数据报协议,面向非连接,不保证可靠性的数据传输服务,没有超时重发等机制,故而传输速度很快.特点:它不与对方建立连接,而是直接就把数据包发送过去,UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。

Socket:又称”套接字”,应用程序通过”套接字”向网络发送请求或应答,它是一个针对TCP和UDP编程的接口,借助它建立TCP/UDP连接。

socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉HTTP协议一Socket连接- -TCP连接关系:1.HTTP协议提供了封装或者显示数据的具体形式;

2.Socket连接提供了网络通信的能力;

3.TCP连接提供如何在网络中传输;

4.socket是纯C语言的,跨平台;

5.HTTP协议是基于socket的,底层使用的就是socket;

6.创建Socket连接时,可以指定使用的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

TCP和UDP区别:

1.基于连接和无连接

2.对系统资源要求(TCP较多,UDP较少)

3.UDP程序结构较简单

4.TCP是流模式,UDP是数据报模式

5.可靠性:TCP保证数据正确性,UDP可能丢包,不保证数据准确性

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值