美文网首页
Socket学习(一)概念理解

Socket学习(一)概念理解

作者: 洛河水手 | 来源:发表于2020-04-01 18:24 被阅读0次

一、socket简介

       大学学习网络基础的时候老师讲过,网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,三者从本质上来说没有可比性,Socket则是对TCP/IP协议的封装和应用(程序员层面上)。Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、listen、connect、accept、send、read和write等等。网络有一段关于socket和TCP/IP协议关系的说法比较容易理解:

“TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”

二、利用Socket建立网络连接的步骤

       建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

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

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

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

三次握手

说明:

SeqSequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。AckAcknowledge Number)确认号占32位,客户端和服务器端都可以发送,Ack = Seq + 1。标志位:每个标志位占用1Bit,共有6个,分别为 URGACKPSHRSTSYNFIN。

(1)URG:紧急指针(urgent pointer)有效。

(2)ACK:确认序号有效。

(3)PSH:接收方应该尽快将这个报文交给应用层。

(4)RST:重置连接。

(5)SYN:建立一个新连接。

(6)FIN:断开一个连接。

相关文章

  • Socket学习(一)概念理解

    一、socket简介 大学学习网络基础的时候老师讲过,网络由下往上分为物理层、数据链路层、网络层、传输层、会...

  • Socket(套接字)

    关于iOS socket都在这里了 Socket概念理解 Socket是一种进程通信机制,凭借这种机制,客户/服务...

  • #Socket回顾学习笔记

    Socket学习笔记 Socket基础知识 背景 Socket概念 Socket 又称"套接字",是系统提供的用于...

  • C#之socket编程---------------2019-0

    一直对这个socket不是太理解,虽然自己也写过socket客户端与服务端的demo但是关于socket的具体概念...

  • 需要具备的技能-不断更新...

    DJ: 清晰理解至少一个系统下Socket的概念,理解异步非阻塞通信模型 (Windows、Linux、 BSD)...

  • CFSocket学习

    一、概念理解 1.什么是Socket? Socket又称为“套接字”,是系统提供的用于网络通信的方法,本质并不是一...

  • iOS_环信

    对于环信(即时聊天)分为三个方面学习: 1,Socket的网络通信,Socket相关难点理解(详见——Socket...

  • Socket学习记录

    Socket是为网络服务提供的一种机制,学习之前对Socket没有任何的理解,在此仅想分享自己的学习历程和一些学习...

  • iOS 原生Socket和CocoaAsyncSocket框架的

    一、Socket到底是什么? 1、Socket原理 1.1、套接字(Socket)概念 套接字(Socket)是通...

  • Socket使用大全

    第一部分、概念的理解 1、什么是Socket? Socket又称之为“套接字”,是系统提供的用于网络通信的方法。它...

网友评论

      本文标题:Socket学习(一)概念理解

      本文链接:https://www.haomeiwen.com/subject/miuauhtx.html