본문 바로가기

Web/기초

[WEB기초] 소켓, 서킷, 패킷, TCP/IP 통신

1. 소켓(Socket)

소프트웨어로 작성된 추상적인 개념의 통신 접속점이라고 할수 있으며, 네트워크 응용 프로그램은 소켓을 통하여 통신망으로 데이터를 송수신하게 된다.

응용 프로그램에서 TCP/IP를 이용하는 창구 역할을 하며 응용 프로그램과 소켓 사이의 인터페이스 역할을 하고 있다.

두 프로그램이 네트워크를 통해 서로 통신을 수행할 수 있도록 양쪽에 생성되는 링크의 단자이다. 두 소켓이 연결되면 서로 다른 프로세스끼리 데이터를 전달할 수 있다.

소켓은 통신을 위한 일종의 통로리며, 소켓은 상대방에게 데이터를 보내거나 받는 역할을 한다. 연결을 수동적으로 기다리느냐, 능동적으로 연결하느냐로 서버, 클라이언트도 구분할 수 있다.

 

2. 서킷, 패킷

인터넷이 생기기 전까지 통신을 위해서는 양 쪽에서 연결이 필요했다. ex. 전화 교환소

이미지

서킷통신 예제 - 출처 . brunch.co.kr/@wangho/6

일단 연결이 된 상태에서는 해당 회선을 완전히 점유하게 된다. 다른 쪽에서 연결을 하고 싶으면 연결이 이미 연결된 곳이 끊어지기 전가지 기다려야 한다.

서킷통신 방식은 회선의 연결을 독점 - 출처 . brunch.co.kr/@wangho/6

 

 

냉전시대 미국의 고민

냉전시대 미소 양국은 핵무기를 포함하여 치명적인 무기를 경쟁적으로 도입하였고, 전 세계는 서로 위협에 늘 긴장된 상태였다. 공격을 위한 무기와 함께, 공격당했을 때 대비책도 중요한 법이다. 당시 (서킷) 통신 방식은 이러한 회선 단절에 취약하다. 회선이 끊어지면 다시 연결을 해야 하고, 누군가 선을 사용 중이면 기다려야 한다. 긴급한 상황에서 효율적인 통신 방법은 아닐 것이다.

 

어떻게 연결해야 할까?

망을 여러 개 만들면 일부 선이 끊어지더라도 다시 연결할 수는 있다. 하지만 중간에 연결이 끊어지면 처음부터 다시 연결을 해야하고, 가능한 망 (멀쩡히 살아있고 누군가 사용하지 않는 회선)을 찾아 다시 연결하는 것이 효율적인 방식은 아니다.

여러개의 노드로 망을 다중화 - 출처 . brunch.co.kr/@wangho/6

다중망 자체만으로는 부족하다. 회선이 사용 중일 때 마냥 기다리지 않아도 되는 방법은 없을까? 선이 끊어지더라도 처음부터 연결하여 다시 통신을 하는 것보다 더 좋은 방법은 없을까? 이 문제를 해결하기 위하여 내용을 작게 잘라서 보내는 방법을 생각해 냈다. 잘게 잘라진 조각들은 각각 목적지를 향하여 가장 효율적인 방법으로 이동한다. 목적지를 향하여 가능한 크고 빠른 길로 달리되, 그 길이 복잡하다면 좀 더 돌아가더라도 우회도로를 찾아가는 것과 비슷한 원리이다.

패킷통신 예제 - 출처 . brunch.co.kr/@wangho/6

내용을 잘게 나눠 보내면 뒤섞이거나 빠진 내용이 생길 수도 있다. 앞의 내용보다 뒤의 내용이 먼저 전달외어 순서가 뒤죽박죽이 되어버릴수도 있다. 하지만 이건 목적지에서 점검을 해서 순서대로 정렬을 하고, 빠지거나 잘못된 게 있으면 그것만 다시 받아 합치면 된다.

패킷 통신 완료 후 데이터 점검 - 출처 . brunch.co.kr/@wangho/6

이제 동시에 여러 곳에서 통신을 하더라도 문제가 없어졌다. 중간에 내용이 끊어지거나 사라지더라도 그 부분만 다시 요청해서 받으면 된다. 하나의 회선에서도 여러 명이 동시에 통신을 할 수도 있다. 

이러한 연결 방식을 패킷통신이라고 한다.

 

3. TCP/IP

위키백과

패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service) TCP는 IP위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다.

 

오늘날 인터넷 통신의 대부분은 패킷통신을 기본으로 하고 있다. TCP/IP는 이러한 패킷 통신을 위한 인터넷의 규약이다. IP는 데이터의 조각들을 최대한 빨리 목적지로 보내는 역할을 한다. 조각들의 순서가 뒤바뀌거나 일부가 누락되더라도 크게 상관하지 않고 보내는 데 집중을 한다. TCP는 IP보다 느리지만 꼼꼼한 방식을 사용한다. 도착한 조각을 점검하여 줄을 세우고 망가졌거나 빠진 조각을 다시 요청한다. 두 방식의 조합을 통하여 인터넷 데이터 통신을 하는 것을 묶어 TCP/IP라고 부른다.

 

 

출처

brunch.co.kr/@wangho/6

 

03. 개알못을 위한 TCP/IP의 개념

1부 웹의 시작과 현재 | 그것은 마치 땅 위의 길과 같은 것이다. 사실 땅 위에는 본래 길이 없었다. 걸어가는 사람이 많아지면서 곧 길이 된 것이다. - 루쉰, 고향 하이퍼텍스트 이야기부터 시작

brunch.co.kr

 

'Web > 기초' 카테고리의 다른 글

[WEB기초] Servlet이란  (0) 2021.01.10
[WEB기초] 로드 밸런서(Load Balancer)  (0) 2020.12.27
[WEB기초] DNS  (0) 2020.12.12
[WEB기초] CGI(공용 게이트웨이 인터페이스)  (0) 2020.12.12
[WEB기초] J2SE, J2EE의 차이  (0) 2020.12.12