본문 바로가기

HTTP 웹 기본

인터넷은 어떻게 연결되어 있는 것일까?

*위 글은 인프런 김영한님의 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 토대로 작성되었습니다.

인터넷은 어떻게 연결되어 있는 것일까?

어릴적 친구들과 pc방에 가서 스타크래프트를 할때면 UDP로 방을 만들어서 게임을 하곤 했었다. pc방 안의 컴퓨터들은 서로 연결되어있어서 인터넷이 끊긴다 할지라도 같이 게임을 할 수 있었다. 이렇듯 인터넷이 태동되던 시기에는 컴퓨터들은 서로 직접적으로 네트워크가 연결이 되있어야만 통신을 할 수 있었다.

 

하지만, 현재 인터넷은 단기간내에 엄청난 성장을 이루어 직접적으로 케이블로 컴퓨터를 연결하지 않더라도 지구 정반대편에 있는 나라와도 통신을 할 수 있는 시대가 찾아온 것이다.

 

1.IP 통신

 

만약 우리가 다른 컴퓨터에 접속하고자 한다면 출발지 에서 보내는 데이터가 목적지에 다이렉트로 도달하는 것이 아니라

수많은 노드들을 거쳐서 목적지에 도달하게 된다. IP 통신은 IP패킷에 출발지IP, 목적지 IP 등의 간단한 정보만을 담아서 데이터를 목적지 IP에 보낸다. 데이터가 목적지에 전달하는 과정중에 여러가지 문제가 발생할 수 있다.

 

1.목적지가 존재하지 않거나 서비스 불능상태인 경우

2.패킷이 소실되는 경우

3.패킷이 순서대로 도착하지 않는 경우

4.애플리케이션을 둘 이상 사용하는 경우

 

이러한 문제점들을 극복하기 위해 3 way handshaking을 사용하는 TCP 통신이 나오게 된다.

 

2.TCP 통신

 

TCP통신은 IP통신과 달리 먼저 목적지에게 접속을 요청한다. TCP 패킷에 출발지 PORT,목적지 PORT,전송 제어, 순서, 검증 정보 등을 포함하여 목적지에 접속을 요청하고 목적지에서 요청을 수락하면 그제서야 데이터를 보내게된다. 이로 인해 목적지 컴퓨터가 서비스 불능 상태여부를 확인하기 때문에 만약 목적지에 문제가 있을 경우 사전에 데이터를 보내지 않게 된다.

 또한 위 과정에서 목적지는 데이터가 오기 전에 어떤 패킷이 어떤 순서로 오는지를 먼저 받기 때문에 패킷이 소실된다거나 순서대로 오지 않았을 때 목적지는 출발지에게 재요청을 보내게 된다. 이로 인해 상호간에 데이터를 신뢰할 수 있게 된다. 하지만 이러한 TCP통신도 단점은 존재하는데 아무래도 PC간의 통신이 여러번 이루어지다 보니 속도가 느려질 수 있다.

 

3.UDP 통신

UDP통신은 데이터의 전달 및 순서가 보장되지는 않지만 단순하고 빠른 것이 특징이다. 기본적으로 IP통신과 매우 유사한데, IP통신의 취약점으로 꼽혔던 포트를 추가한 방식이다. 물론 PORT 개념은 TCP 통신에도 있다. PORT는 말 그대로 컴퓨터의 항구의 역할을 한다. 한 컴퓨터 안에서 여러가지 애플리케이션이 돌아갈 수 있는데, 만약 포트라는 개념이 없다면 컴퓨터는 어디로 정보를 보낼지를 몰라 혼잡해질 것이다. 그래서 하나의 애플리케이션에 하나의 포트를 열어놔서 해당 포트에는 그에 해당 어플리케이션에만 접근 가능하도록 하게 한 것이다.