네트워크

소켓(Socket)

rnrwk0502 2024. 7. 29. 23:19

소켓이란?

소켓은 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 전송 계층과 응용 계층 사이의 인터페이스 역할을 하며 떨어져 있는 두 호스트를 연결해준다.

소켓의 본질은 파일로 장치 파일의 일종으로 이해할 수 있다. 때문에 일반 파일에 대한 개념이 대부분 적용된다.

주어는 프로세스, 대상체는 소켓(file)로 open, create, close, delete, R, W, X가 가능하다.

만약 해당 대상체 파일이 TCP스택에 대한 추상화된 인터페이스를 제공한다면,

→ 파일이라 하지 않고 TCP소켓이라 한다.

 

소켓은 프로토콜, IP주소, port넘버로 정의된다.

 

소켓이 하는 일

1. 소프트웨어와 소프트웨어를 연결 

    → 어떻게 연결? 프로토콜, IP주소, port넘버를 통해 찾고 연결

2. 소프트웨어 간 데이터 통신 

    = 인터넷에서 소켓을 찾아 연결하고 데이터를 송수신한다.

 

프로세스 간 통신에 사용되는 소켓을 이용한 통신 프로그래밍소켓 프로그래밍이라고 한다.

→ 클라이언트 소켓과 서버 소켓으로 구분되는데 

    통신 연결 요청을 받아들이는 소켓을 Server 소켓,

    통신 연결 요청을 보내는 소켓을 Client 소켓이라고 한다.

동일한 구조의 소켓이지만, 역할에 따라 처리되는 흐름이 조금 다른 것 뿐이다.

출처 : 쉬운 코드, https://www.youtube.com/watch?v=WwseO8l8rZc&t=66s

소켓 통신의 흐름

 Client

1. socket()으로 소켓 생성

2. connect()를 이용하여 통신할 서버에 설정된 ip, port번호에 연결 시도

3. 통신을 시도시, 서버가 accept()를 이용하여 클라이언트의  socket descriptor 반환

4.이를 통해 서로 read(), write()를 데이터 송수신 (반복)

5. 통신이 끝났다면 close()로 소켓 닫기

 

 Server

1. socket()으로 소켓 생성

2. bind()로 ip와 port번호를 설정

3. listen()으로 클라이언트 요청에 대기열을 만들어 몇개의 클라이언트를 대기시킬지 결정

4. accept()으로 클라이언트와 연결

5. 이를 통해 서로 read(), write()를 데이터 송수신 (반복)

6. 통신이 끝났다면 close()로 소켓 닫기

 

소켓 종류

1) 스트림 소켓

- 양방향으로 바이트 스트림을 전송, 연결 지향성 소켓

- 오류 수정, 전송처리, 흐름제어 보장

- 송신된 순서에 따라 중복되지 않게 데이터를 수신 → 오버헤드가 발생

- 소랑의 데이터보다 대량의 데이터 전송에 적합 → TCP를 사용

 

2) 데이터그램 소켓

- 비연결형 소켓

- 데이터의 크기에 제한이 있다.

- 확실하게 전달이 보장되지 않음, 데이터가 손실돼도 오류가 발생하지 않음

- 실시간 멀티 미디어 정보를 처리하기 위해 주로 사용 → UDP를 사용

 

출처

https://helloworld-88.tistory.com/215

 

[기본] 소켓(SOCKET)통신 이란?

소켓통신 소켓(SOCKET)이란?소켓(Socket)은 프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데

helloworld-88.tistory.com

https://velog.io/@newdana01/%EC%86%8C%EC%BC%93%EC%9D%B4%EB%9E%80-%EC%A2%85%EB%A5%98-%ED%86%B5%EC%8B%A0-%ED%9D%90%EB%A6%84-HTTP%ED%86%B5%EC%8B%A0%EA%B3%BC%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

소켓이란? 종류, 통신 흐름, HTTP통신과의 차이

네트워크를 경유하는 프로세스 간 통신의 종착점. OSI 7계층 중 응용 계층에 속하는 프로세스들은 데이터 송수신을 위해 반드시 소켓을 거쳐 전송 계층으로 데이터를 전달해야한다. 즉, 소켓은

velog.io

https://velog.io/@rhdmstj17/%EC%86%8C%EC%BC%93%EA%B3%BC-%EC%9B%B9%EC%86%8C%EC%BC%93-%ED%95%9C-%EB%B2%88%EC%97%90-%EC%A0%95%EB%A6%AC-1

 

[소켓과 웹소켓] 한 번에 정리 (1) | 소켓이란?, 소켓 API의 실행 흐름, 클라이언트 소켓과 서버 소

넷응설 예습 스터디를 위해 소켓 프로그래밍에 대해 자료를 정리하던중 ... http와 TCP/IP소켓 웹소켓 등등 .. 비슷한듯 다른 개념들이 정리가 안되고 헷갈려가지고 한 번에 정리해보려한다. 이번

velog.io

 

'네트워크' 카테고리의 다른 글

게이트웨이 / 방화벽  (0) 2024.08.02
HTTPS란?  (0) 2024.07.29
naver.com을 검색하면?  (0) 2024.07.29
쿠키 / 세션 / JWT  (0) 2024.07.29
도메인 & DNS  (0) 2024.07.29