Liooos-출발은 작은 한걸음부터

[Network] 프로토콜(Protocal)과 소켓(Socket) 본문

Other

[Network] 프로토콜(Protocal)과 소켓(Socket)

Cozy.Han 2020. 8. 5. 22:42

안녕하세요.

미스터한 입니다.

 

오늘은 회의를 하러 갔다가 프로토콜에 대한 개념이 없이 참여했다가...

당황했던 일이 떠올라 이렇게 글을 쓰게 되었습니다.

당시 문제의 화두는 프로토콜을 정한다고 해서 당연히 TCP/IP의 HTTP 프로토콜 쓰겠지.. 라는 마음으로 가볍게 참여했지만

두둥! "프로토콜은 소켓(Socket)으로 열어드리겠습니다." 라는 말에 당황했던 기억이 있네요. 

그당시 소켓이란 양방향 통신을 말하는 것이란 의미는 알겠는데..(웹소켓 개념을 생각함)

소켓 자체가 프로토콜인가? 갸우뚱? 하고 있다가 

곰곰히 생각해보니 TCP/IP도 프로토콜이고... HTTP도 프로토콜이고....

근데 나는 TCP/IP의 HTTP 프로토콜을 쓴다고 생각했지 라는 의문이 들더군요.

게다가 TCP와 비교를 많이 하던 UDP 프로토콜은 다른 프로젝트에서 쓰이는지 자주 언급이 되었던 것도

아마 헷갈렸던 원인이 아닐까 싶습니다. (뭔...변명을...)

프로토콜과 소켓에 대해서 정리하는 시간을 가져보도록 하겠습니다.

전부는 아니지만 위에 쓰이는 필요한 것들만 추려서 살펴보겠습니다.

 

먼저 큰 토대를 알아보기위해 프로토콜(통신 규약)에 구조에 대해서 한번 살펴볼수 있는데요.

프로토콜 정리

OSI 7 Layer Model

7계층. Application Layer

6계층. Presentation Layer

5계층. Session Layer

4계층. Transport Layer

3계층. Network Layer

2계층. DataLink Layer

1계층. Physical Layer

 

TCP/IP 프로토콜(Protocal)

4계층. Application - OSI 5,6,7 Layer

- telnet, FTP, DHCP, TFTP, HTTP, SMTP, DNS, SNMP

3계층. Transport - OSI 4 Layer

- TCP, UDP

2계층. Internet - OSI 3 Layer

- ICMP, ARP, RARP, IP

1계층. Network Interface - OSI 1,2 Layer

 

TCP/IP 프로토콜과 OSI 7 계층 모델과의 관계

TCP/IP:4계층 - OSI:7,6,5계층

TCP/IP:3계층 - OSI:4계층

TCP/IP:2계층 - OSI:3계층

TCP/IP:1계층 - OSI:2,1계층

 

프로토콜(Protocal) 구조

여기서 자주 들었던 프로토콜의 주요 특징만 살펴보자.

IP

- 패킷을 분할 및 재조립함

- 수신할 상대 주소를 지정함

TCP

- Stream 방식

- 양방향 통신

- 연결성, 순서, 신뢰성이 있음

UDP

- Datagram 방식

- 양방향 연결이 필요 없음

- 속도를 우선으로 연결성, 순서, 신뢰성이 없음

HTTP

- TCP와 IP(TCP/IP) 프로토콜 위에서 동작하는 응용 계층의 프로토콜

- 웹상에서 주로 HTML문서를 주고받는데 쓰임

- 클라이언트/서버 사이에 요청(request)/응답(response) 통신

 

 

소켓 정리

다음으로 소켓이 무엇인지 살펴보자.

보통 네트워크에서 다루는 소켓은 인터넷 소켓(network socket)을 말하는 듯 하다. 따라서 아래 내용의 소켓은 인터넷 소켓으로 해석하면 된다.

 

소켓의 유형으로 보통 TCP/IP와 UDP/IP가 있다.

TCP/IP 프로토콜 기반의 Stream 방식

- 양방향 연결

- 데이터의 신뢰성 보장(소실, 변형, 순서 보장)

- 한개의 패킷을 여러개로 나누어 받거나 여러개의 패킷을 하나로 받을수 있으므로 별도의 처리가 필요함

UDP/IP 프로토콜 기반의 Datagram 방식

- 양방향 연결이 필요 없음

- 데이터 소실일 발생 될수 있음

- 데이터 소실의 이유가 다양해 예측하기 어려움

- 먼저 보낸 데이터보다 늦게 보낸 데이터를 먼저 받을 수도 있음

- 한개의 데이터를 여러개로 분할없이 받을 수 있음

 

소켓 통신 과정(전화통화와 유사함)

발신자(클라이언트) : 소켓 생성 -----------------------------------> 연결 -------> 통신 -> 소켓 닫기(연결 끊기)

수신자(서버)           : 소켓 생성 -> IP주소 및 포트 할당 -> 연결 대기 -> 연결의 승인 -> 통신 -> 소켓 닫기(연결 끊기)

소켓 통신 

1. server 소켓 생성과 listen(이벤트)

2. connect을 위한 client 소켓 생성

3. client 소켓에서 server 소켓으로 메시지 전송

4. server에서 새로운 소켓 생성 후 처리

5. server 소켓에서 client 소켓으로 메시지 전송

6. 소켓 Close(소켓 닫기)

 

결과

정리한 내역으로 보면

회의에서 나온 "프로토콜은 소켓(Socket) 으로 하시면 되요"라는 말은 다음과 같이 해석 할 수 있다.

소켓은 일반적으로 Transport 계층에 속해있는 TCP 프로토콜을 말한다.

TCP/IP 프로토콜 기반의 소켓 방법으로 진행을 한다.

라고 알아들으면 될듯하다.

 

------------------------------------------------------------------------------------

아직까지 제대로 습득하지 못한 부분이 있어

더 궁금하거나 잘못된부분이 있으면 지적해 주시면

다시 알아보고 수정하도록 하겠습니다.

블로그 성장만큼이나 여러분들과 저의 성장도 기대하고 있습니다!

감사합니다.

'Other' 카테고리의 다른 글

도형 그리기 함수 만들기  (2) 2020.11.29
Comments