前言

Socket是網路編程中常常能聽到的一個概念,自己對這個概念的理解一直比較模糊,借這篇文章釐清概念。

談談官方的Socket理解

先看看wiki中的定義: > A network socket is a software structure within a network node of a computer network that serves as an endpoint for sending and receiving data across the network.

簡單翻譯一下:socket是計算機網路中資料傳送和接收的端點。

再看看不同面向下socket的意義:

  • 對於作業系統內核來說,socket是進程溝通的端點
  • 對於應用來說,socket是應用從網路讀寫的文件描述符

再看看socket的位置:

可見Socket位於應用層和傳輸層(TCP/UDP)之間,負責應用層和應用層以下協議棧之間的信息交互。

以下為例(向1.2.3.4的80port通過tcp協定發送字串"Hello, world!"):

1
2
3
4
Socket mysocket = getSocket(type = "TCP")
connect(mysocket, address = "1.2.3.4", port = "80")
send(mysocket, "Hello, world!")
close(mysocket)

https://en.wikipedia.org/wiki/Network_socket

通俗的談談socket理解

個人理解socket就是不同計算機中不同進程之間交互的工具,並且socket向應用層提供了簡單的接口,不用在編寫應用層程式時對L4及以下網路協議棧深入。

補充

  • socket address: (transport protocol,IPA,port number)