前言
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 | Socket mysocket = getSocket(type = "TCP") |
https://en.wikipedia.org/wiki/Network_socket
通俗的談談socket理解
個人理解socket就是不同計算機中不同進程之間交互的工具,並且socket向應用層提供了簡單的接口,不用在編寫應用層程式時對L4及以下網路協議棧深入。
補充
- socket address: (transport protocol,IPA,port number)