2023. 4. 6. 15:54ㆍ부트캠프/DevOps (TIL)
소켓은 네트워크 상에서 동작하는 프로그램 간 통신의 종착점(End_Point)이다. 즉 프로그램이 네트워크에서 데이터를 통신 할 수 있도록 연결해주는 연결부라고 볼 수 있다. 데이터를 통신할 수 있도록 연결해주기 때문에 통신할 클라이언트와 서버 모두 소켓이 생성되어야 한다.
즉, OSI 7 계층의 어플리케이션 계층(application layer)에 존재하는 네트워크 응용 프로그램들은 데이터를 송수신 하기 위해 소켓을 거쳐 전송 계층(trasport layer)의 통신 망으로 전달함으로써 데이터를 송수신 하게 된다.
따라서 소켓은 그 사이에 위치하고 있으며, 응용 프로그램에서 TCP/IP를 이용하는 인터페이스 역할을 한다.
통신을 통해 전달되는 모든 데이터 포맷은 5-tuple 이라는 규격에 맞추어 흐르게 된다.
소켓도 위 정보들인 프로토콜, IP 주소, port 번호가 있어야 정의된다.
먼저 보통 소켓은 인터넷 소켓이며, 위에서도 말했듯이 전송 계층 위에서 동작하므로 프로토콜은 TCP/UDP 가 된다. 프로토콜이 정의되면 네트워크 상에서 데이터를 송수신할 수 있는 방법, 규칙이 정의된 것이다.
이제 누가 어디로 보낼 지를 정의하기 위한 주소로 IP와 port 정보가 필요하다. IP 주소는 어떤 호스트(단말기)로 데이터를 보내야 할 지 알려준다. IP 주소를 이용해 원하는 호스트에 도착했다고 끝이 아니라 송수신할 프로세스를 찾아야 한다. 소켓은 프로세스 간 통신을 하기 위한 api다. 이때 port 번호를 통해 어떤 프로세스에 가야할 지 정할 수 있다.
즉, 호스트의 어떤 프로세스와 다른 호스트(목적지 호스트)의 프로세스가 네트워크 상에서 통신하기 위해 당연하게 위 정보들이 필요하게 된다.
또 중요한 부분이 1개의 프로세스는 1개 이상의 소켓을 사용할 수 있다. 따라서 1개의 호스트 내의 프로세스 1개로 여러 개의 소켓을 열어 다수의 호스트들과 통신도 가능하다. 이때 소켓들을 구분하는 방법은 소켓에 주어지는 소켓 번호로 식별한다.
Server
Client
Server
처음 만들어 진(bind() 후 listen()한) 소켓은 그 이후로도 새로운 Client의 요청을 대기하기 위해 쓰임
Server-Client
connect()과정이 필요 없기 때문에 소켓을 생성한 후 바로 데이터 전송
따라서 주로 일 대 다 통신에 많이 쓰임
포트(port)는 "논리적인 접속장소"이며, 특히 인터넷 프로토콜인 TCP/IP를 사용할 때에는
클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용된다.
네트워크 상에서 통신을 할 때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근한다.
그런데 대부분의 경우 하나의 컴퓨터에는 여러 개의 서버가 실행될 수 있다.
컴퓨터에 여러 개의 서버가 실행되고 있다면, 어느 서버에 접속해야 하는지 컴퓨터에게 알려주어야 한다.
이때 사용되는 것이 포트 번호이다.
- 소켓은 특정 포트에서 데이터를 송수신하는 인터페이스, 포트는 장치의 특정 프로세스 또는 프로그램에 할당된 숫자 값이다.
-소켓은 컴퓨터 네트워크의 노드 내에서 데이터를 보내고 받기 위한 내부 Endpoint, 포트는 통신의 Endpoint에서 응용 프로그램에 할당되는 숫자 값이다.
- 소켓이 특정 포트를 통해 데이터를 주고 받는 인터페이스 역할, 포트는 특정 어플리케이션이나 프로세스를 식별하는데 도움을 준다.
출처
https://blog.naver.com/ding-dong/221389847130
https://bnzn2426.tistory.com/52?category=770232
https://on1ystar.github.io/socket%20programming/2021/03/16/socket-1/
https://tigercoin.tistory.com/189
20_Study(JSON이 XML에 비해 가지는 이점) (0) | 2023.04.10 |
---|---|
19_Study(HTTP 종류와 차이점) (0) | 2023.04.06 |
18_Study(OLTP vs OLAP) (0) | 2023.03.31 |
16_Study(Partitioning) (0) | 2023.03.30 |
16_Study(인덱스) (0) | 2023.03.30 |