티스토리 뷰

728x90
반응형

소켓이란


소켓은 논리적으로 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 

이 말이 무슨 말이냐면, 네트워크를 이용해 데이터를 송수신 하고 싶은 프로그램들은 소켓을 거쳐야 한다는 것이다. 따라서 아래와 같은 위치에 소켓 레이어가 놓이게 된다.

 

네트워크 응용 프로그램들은 소켓을 거쳐 데이터를 통신 망으로 전달함으로써 데이터를 송수신 하게 된다.

여기서 응용 프로그램은 어플리케이션 계층, 통신 망은 전송계층이므로 소켓은 그 사이에 놓이게 된다.

 

즉 소켓은 응용 프로그램에서 TCP/IP를 이용하는 인터페이스 역할을 한다.

 

소켓의 특징


파일과 비슷한 데이터 타입

소켓은 파일 디스크립터와 비슷한 형식의 데이터로 생성과 설정 과정이 끝나면 이를 이용하여 통신과 관련된 다양한 작업을 할 수 있는 간편한 데이터 타입으로 생각할 수 있다.

 

 

TCP/IP 표준이 아닌 네트워크 프로그래밍 인터페이스

간혹, 소켓이 TCP/IP 프로토콜에서 대부분 사용되기 때문에 TCP/IP 표준으로 오해하는 경우가 있다.

TCP/IP의 관점에서 소켓은 하나의 네트워크 프로그래밍 인터페이스다.

 

운영체제나 언어에 종속적

Java, Linux, windows 등 소켓 API가 모두 다르다.

 

5-Tuple

통신을 통해 전달되는 모든 데이터 포맷은 5-tuple 이라는 규격에 맞추어 흐르게 된다.

소켓 역시 이 5-Tuple의 정보를 가지고 있다.

1. 프로토콜 (TCP, UDP)

2. 자신의 IP address

3. 자신의 Port number

4. 목적지 IP address

5. 목적지 Port number

 

 

소켓 프로그래밍 절차


TCP (Transmission Control Protocol)

TCP Socket Flow (Image source)

 

 

 socket()   소켓 생성
 bind()   사용할 자신의 IP address와 Port number 등록
 listen()  연결 되지 않은 소켓을 요청 수신 대기 모드로 전환
 connect()  TCP Client에서 server와 연결하기 위해 소켓과 목적지 IP address, Port number 지정
 accept()  client의 요청 수락 후 연결
 send(), recv()  client와 server간에 데이터 송수신
 close()  생성했던 소켓 종료

 

UDP (User Datagram Protocol)

connect과정 (서로 연결 과정)이 필요 없기 때문에 소켓을 생성한 후 바로 데이터 전송

728x90
반응형

'CS > 네트워크 공부' 카테고리의 다른 글

[네트워크] ARP (Address Resolution Protocol)  (0) 2023.03.26
[네트워크] OSI 7 계층 개요  (1) 2023.03.26
Network Layer  (0) 2019.05.26
raw socket을 이용한 packet sniffing  (0) 2019.05.06
Packet switching 더 자세히...  (2) 2019.03.25
댓글