📌 인터네트워킹
네트워크와 네트워크의 연결을 인터네트워킹(Internetworking)이라고 부른다.
서로 독립적으로 운영되는 두 네트워크가 연동되어 연결된 시스템을 교환하려면 이를 적절히 연결하여 데이터를 중개할 수 있는 인터네트워킹 시스템이 필요하다. 연동한다는 의미는 물리적인 연결 뿐만 아니라, 데이터 중개에 필요한 상위 통신 프로토콜을 모두 지원한다.
인터네트워킹은 그 네트워크의 일부에서 고장이 나도 영향이 광범위하게 퍼지지 않는다는 점과, 불필요한 통신이 네트워크 전체로 확산하지 않는다는점, 개별 네트워크를 각각의 방침에 따라 관리가 가능하다는 등의 장점이 있다.
전 세계적으로 인터네트워킹하는 것이 우리가 사용하는 인터넷(The Internet)이다.
📌 프로토콜
프로토콜(Protocol)이란 컴퓨터 내부, 혹은 컴퓨터 사이에서 데이터를 교환하는 방식(혹은 약속)을 정의하는 규칙 쳬계를 말한다.
인터넷에 연결되어 있는 서로 멀리 떨어진 컴퓨터들끼리 소통을 하기 위해선 통신을 위한 약속이 필요하다. 이 공통된 약속을 프로토콜이라 한다. 지금은 ‘TCP/IP’ 프로토콜이 주로 사용되는 약속이다.
프로토콜은 어느 컴퓨터든 일관되게 네트워크를 사용할 수 있게 위해 만든 공통언어이다.
📌 인터넷 프로토콜 스위트
인터넷 프로토콜 스위트(Internet Protocol Suite)는 전세계를 통해 가장 일상적으로 사용되는 프로토콜 체계 모음 중 하나이다.
흔히 TCP/IP라고 알려진 인터넷 프로토콜 스위트(Internet Protocol Suite)는 인터넷과 이와 유사한 컴퓨터 네트워크 사이에서 정보를 주고받는 데 이용되는 통신 프로토콜의 모음을 말한다.
인터넷이 처음 시작하던 시기에 정의되어 현재까지 표준으로 사용하고 있는 TCP(Transmission Control Protocol) 와 IP(Internet Protocol) 에서 가져와 TCP/IP 라고 부른다.
📌 IP
네트워크에 연결된 특정 PC의 주소를 나타내는 체계를 IP(Internet Protocol)라고 한다.
서울특별시청을 찾아가기 위해서는 서울특별시청의 주소를 알아야 한다. 마찬가지로 네트워크 상에서 서울특별시청에 근무하는 아무개 씨의 PC에 접속하기 위해서는, 아무개 씨의 PC를 가리키는 주소를 알아야 한다.
이렇게 네트워크에 연결된 특정 PC의 주소를 나타내는 체계를 IP(Internet Protocol)이라고 하며, 각 주소를 IP address(Internet Protocol address)라고 한다.
✔️ IP 주소
공유기를 설치하고 비밀번호를 설정하려면, 공유기 관리 페이지에 접속해야 한다. 웹 브라우저에 닷(.)으로 구분된 네 덩이의 숫자를 입력하면, 공유기의 관리 페이지로 접속할 수 있다. 이때 사용되는 네 덩이의 숫자를 IP 주소(Internet Protocol Address)라고 한다.
✔️ IP의 구성
IPv4 주소는 OOO.OOO.OOO.OOO 의 형식으로 되어 있다.
10진수로 표기되어 있지만, 그 실체는 마침표로 구분된 4개의 8비트 필드(8자리 2진수 4개)로 구성되어 있다. 각 8비트 필드는 IPv4 주소에서 1바이트를 나타낸다. IPv4 주소의 바이트를 나타내는 이러한 형식을 점으로 구분된 십진수 형식이라고도 한다.
IP 주소는 네트워크부와 호스트부로 나뉜다.
네트워크부는 어떤 네트워크인지를 알 수 있는 정보이고, 호스트부는 그 네트워크 안의 특정 컴퓨터를 지칭하는 정보를 말한다. IPv4 주소는 4개의 옥텟으로 이루어져 있고, 각각을 1옥텟, 2옥텟, 3옥텟, 4옥텟이라고 부른다.
위 서브넷 마스크의 경우는, 1에서 3까지의 옥텟을 네트워크부로 사용하는 서브넷 마스크이다. 따라서 4옥텟은 호스트부로 사용하고 있음을 알수 있다.
※ 서브넷 마스크(Subnet Mask) : 서브넷 마스크는 IPv4 주소에서 네트워크부가 어디까지인지를 나타낸다.
호스트부가 0으로만 이루어진 것을 네트워크 주소로 그 네트워크를 의미한다.
호스트부가 1으로만 이루어진 것은 브로드캐스트 주소로 ARP와 같은 기능을 사용하기 위해 사용한다.
- IP 주소: 192.168.1.1
- 서브넷 마스크: 255.255.255.0
- 네트워크 주소: 192.168.1.0
- 브로드캐스트 주소: 192.168.1.255
✔️ IPv4 / IPv6
인터넷 주소체계는 크게 IPv4(Internet Protocol Version 4)와 IPv6(Internet Protocol Version 6)로 나뉜다.
인터넷 보급률이 낮았던 초기에는 IPv4 버전으로 네트워크의 연결된 PC에 주소를 할당하는 일이 가능했다. 그러나 개인 PC의 보급으로 전 세계의 누구나 PC를 이용해 인터넷에 접속하고, 각종 서비스를 위해 서버를 생산하면서 IPv4로 할당할 수 있는 PC가 한계를 넘어서게 되었다. 이를 위해 세상에 나오게 된 것이 IPv6 버전이다.
IPv6는 표기법을 달리 책정하여 2^(128)개의 IP 주소를 표현할 수 있다. 하지만 IPv6 가 등장하고 오랜 시간이 지났음에도 불구하고 이를 메인으로 사용하지는 않는다. 그 이유는 아직도 IPv4가 사용할 만 하기 때문이다.
✔️ MAC 주소
각 네트워크 기기는 처음부터 제조사에서 할당하는 고유 시리얼인 MAC 주소(Media Access Control Address)를 가진다.
IP address만 가지고는 네트워크 상에서 송수신이 가능하지 않다. 각 네트워크 기기는 제조사에서 할당한 MAC 주소와 IP 주소를 조합해야만 네트워크를 통한 통신이 가능하다.
이더넷에서는 네트워크상의 송수신 상대를 특정하고자 MAC 주소를 사용하고, TCP/IP 에서는 IP address를 사용하기 때문이다.
✔️ ARP
같은 LAN에 속한 기기끼리 통신할 때에는 우선 상대방의 MAC 주소를 파악하는 과정이 있다. 이 때 사용하는 것이 ARP(Address Resolution Protocol)이다.
MAC 주소를 파악하기 위해 네트워크 전체에 브로드캐스트를 통해 패킷을 보내고, 해당 IP를 가지고 있는 컴퓨터가 자신의 MAC 주소를 Response하게 됨으로써 통신할 수 있게 해주는 프로토콜이다.
✔️ IP 프로토콜의 한계
- 비연결성
패킷을 받을 대상이 없거나 특정한 이유로 서비스 불능 상태에 빠져도 데이터를 받을 상대의 상태 파악이 불가능하기 때문에 패킷을 그대로 전송하는 비연결성 문제가 있다. - 비신뢰성
중간에 패킷이 사라지더라도 보내는 기기 측에서는 알 수 있는 방법이 없다. 또한, 서로 다른노드를 거쳐서 전송되는 특성상, 보내는 기기측에서 의도한 순서대로 데이터가 도착하지 않을 수 있다.
한 IP에서 여러 애플리케이션이 작동하는 경우 특정할 수 없는 한계가 있다.
이러한 한계들을 극복하기 위해 TCP 와 UDP 가 사용되고 있다.
📌 TCP
TCP(Trancemission Control Protocol)란 서버와 클라이언트 간에 데이터를 신뢰성있게 전달하기 위해 만들어진 프로토콜이다.
데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜이다. 데이터는 네트워크 선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어서 전달될 수 있는데, TCP는 손실을 검색해내서 이를 교정하고 순서를 재조합할수 있도록 해준다.
✔️ TCP의 특징
1. 신뢰성
TCP의 가장 중요한 특징은 신뢰할 수 있는 말단 장치간 데이터 전달이다.
- 신뢰성을 제공 하려면, TCP는 손상되거나 없어지거나 중복되거나 네트워크 계층에서 순서가 틀어져서 전달된 데이터를 복구해야 한다.
- TCP는 신뢰성을 실현하기 위해 적극적 수신, 통지, 재전송 체계를 사용한다.
2. 흐름 제어
TCP는 송신자가 보낸 데이터의 양을 제어하는 흐름 제어 메커니즘을 구현한다.
- TCP 데이터 세그먼트를 송수신하는 컴퓨터는 CPU와 네트워크 대역폭의 차이 때문에 서로 다른 데이터 속도로 작동할 수 있다. 이는 수신자가 처리할 수 있는 것처럼 훨씬 더 빠른 속도로 송신자가 데이터를 보낼 가능성이 많다. TCP를 사용하면 송신자가 보낸 데이터의 양을 제어하는 흐름 제어 메커니즘을 구현할 수 있다.
3. 다중화
TCP에서는 한 라우터의 많은 프로세스가 TCP 통신 서비스를 동시에 사용할 수 있다.
- 이들 프로세스는 같은 네트워크 인터페이스에서 통신할 수 있으므로 네트워크 인터페이스의 IP 주소로 식별된다. 한 컴퓨터의 같은 네트워크 인터페이스를 사용하는 모든 프로세스는 공통의 IP 주소를 가지고 있으므로, 네트워크 인터페이스의 IP 주소 외에도 더 많은 것이 필요하다.
TCP는TCP를 사용하는 응용프로그램에 포트 번호 값을 연계시킨다. 각 연결은 서로 다른 포트 쌍을 사용하므로, 이 연관성은 원격 컴퓨터의 응용 프로그램 프로세스들 사이에 여러 연결이 존재할 수 있게 한다.
또한 응용 프로그램 프로세스에 대한 포트의 바인딩은 각 컴퓨터에서 독립적으로 처리된다.
4. 연결형 서비스
응용 프로그램 프로세스는 TCP를 사용하여 데이터를 보낼 수 있는 상태가 되려면 먼저 연결을 설정해야 한다.
5. TCP 연결은 데이터를 양방향으로 운반할 수 있다.
하나의 전송선로에서 데이터가 동시에 양쪽방향으로 전송될 수 있는 것을 의미한다.
6. TCP 연결은 3way handshake 절차를 사용하여 열린다.
SYN과 ACK 플래그는 다음과 같은 패킷을 나타내기 위해 사용된다.
- Step 1 (SYN)
처음으로, sender는 receiver와 연결 설정을 위해 segment를 랜덤으로 설정된 SYN(Synchronize Sequence Number)과 함께 보낸다. 이 요청은 receiver에게 sender가 통신을 시작하고 싶다고 알린다. - Step 2 (SYN / ASK)
receiver 는 받은 요청을 바탕으로 SYN/ACK 신호 세트를 응답한다. Acknowledgement(ACK) 응답으로 보내는 segment가 유효한 SYN요청을 받았는지를 의미한다. - Step 3(ACK)
마지막 단계에서, sender는 받은 ACK를 receiver에게 전송을 하면서, 신뢰성 있는 연결이 성립되었다는 사실을 sender와 receiver 양쪽에서 알 수 있고, 실제 데이터 전송이 시작되게 된다.
※ SYN(Synchronize sequence numbers) :
- '동시에 발생하다'라는 의미로, 다른 컴퓨터로 전송된 TCP 패킷으로 연결이 이루어지도록 요청한다.
- SYN이 두번째 시스템에 수신되면 SYN / ACK가 SYN이 요청한 주소로 다시 전송된다.
※ ACK(Acknowledgment) :
- ACK는 '승인'이라는 의미로, 다른 컴퓨터나 네트워크 장치가 다른 컴퓨터에 SYN / ACK 또는 다른 요청을 보낸 것을 확인한 응답을 나타낸다.
✔️ UDP
User Datagram Protocol의 축약어로 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종이다.
네트워크로 통신을 하는 데 있어서 신뢰성을 얻기 위해 프로그램들은 TCP로 통신을 하고 있었다. TCP는 데이터 신뢰성을 보장하기 위한 방식이기 때문에 누락된 데이터를 모두 받기 위한 메커니즘이 정의되어 있다. TCP는 이메일이나 파일전송과 같은 분야에서는 필수불가결의 요소였으나 실시간 스트리밍 서비스에서는 걸림돌로 작용하고 있었다. 간단히 전체 영상에서 점 하나 못 받은 것 때문에 버퍼링 돌린다고 재생이 중지되기 일쑤였고, TCP는 혼잡제어를 위해 보내는 양도 조절하기 때문에 영상 데이터의 퀄리티가 안정적이지 못했다. 결국 이를 해결하기 위하여 제시된 것이 UDP이다.
아래와 같은 이유로 많은 애플리케이션 개발자들은 UDP를 많이 사용한다.
애플리케이션의 정교한 제어가 가능하다.
- TCP의 경우 receiver가 전송 받을 준비가 될 때까지 세그먼트를 반복적으로 재전송한다.
실시간 전송에 대한 요구가 큰 애플리케이션 들은 높은 latency를 지양하므로 약간의 데이터 손실을 감수해야 한다. 대신 개발자 스스로가 이를 보완하기 위해 애플리케이션에 추가 기능을 구현할 수 있다.
연결설정에 무관하다.
- TCP 3-way handshake 가 없는 udp는 예비과정 없이 바로 전송을 시작한다.
설정단계에서 발생하는 지연이 없는 만큼, 반응속도가 빠르다. 또한, TCP 가 신뢰성을 위해 많은 파라미터와 정보 전달이 필요함과 비교해 UDP는 연결설정 관리를 하지 않기 때문에 어떠한 파라미터도 기록하지 않는다. 이때문에 서버에서도 TCP와 비교에 더 많은 클라이언트를 수용이 가능하다.
✔️ TCP vs UDP
TCP와 UDP는 중개하는 역할을 하는점에서는 동일하지만, 각각이 다른 아래와 같은 특징을 가지고 있다.
주제 | Transmission Control Protocol (TCP) | User Datagram Protocol (UDP) |
서비스 타입 | 연결 지향적 프로토콜 | 데이타그램 지향적 프로토콜 |
신뢰성 | 데이터 전송 표적 기기까지의 전송을 보장한다. | 표적 기기까지의 전송이 보장되지 않는다. |
순서 보장 | 전송하는 패킷들이 순서가 보장된다. | 패킷의 순서가 보장되지 않는다. 패킷 순서를 보장하고 싶다면 애플리케이션 레이어에서 관리되어야 한다. |
속도 | UDP와 비교해 느리다. | TCP와 비교해 빠르고, 단순하며 더 효율적인 속도를 가지고 있다. |
※ 데이타그램(Datagram) : 발신지와 수신지 컴퓨터 사이에서 데이터 교환과 관계없이 독립적인 전송 정보 데이터를 말한다. 패킷이라는 용어로 대체가 가능하다.
📌 회선 교환과 패킷 교환
기기끼리의 통신에는 크게 회선 교환(Circuit Switching) 방식과 패킷 교환(Packet Switching) 두가지 방식이 있다.
✔️ 회선 교환
통신 회선에서 데이터 교환을 하는 회선교환 방식은 주로 음성전화 시스템에 사용된다.
전화는 일대일로 데이터를 교환하고, 전화 간 통화 중에는 다른 상대와 전화통화가 불가능하다. 하지만 컴퓨터 네트워크는 여러 상대와 통신이 가능해야 한다. 따라서 회성 교환방식은 컴퓨터 네트워크에서는 효율적이지 않다. 그래서 이를 극복하기 위해 패킷교환 방식이 생겨났다.
✔️ 패킷 교환
원본 데이터를 패킷(Packet)이라고 하는 작은 단위로 나누고, 여러 회선을 공요해 통신을 하는 방식이다.
하나의 패킷은 헤더(Header)와 페이로드(Payload)로 구성되어 있고, 헤더에는 어떤 데이터의 몇번째 데이터인지의 정보와 보내는곳, 최종 목적지에 대한 정보 등이 들어있다.
이렇게 주고받 데이터를 작게 분할하여 전송하더라도, 도착한 곳에서 원래대로 복원이 가능하다.
📌 TCP/IP의 4계층 모델
층 수 | TCP/IP 4계층 모델 | 주요 프로토콜 | 역할 |
4층 | 응용 계층 | HTTP, DNS, FTP…… | 애플리케이션에 맞추어 통신한다. |
3층 | 전송 계층 | TCP, UDP….. | IP와 애플리케이션을 중개해 데이터를 확실하게 전달한다. |
2층 | 인터넷 계층 | IP, ICMP, ARP, RARP….. | 네트워크 주소를 기반으로 데이터를 전송한다. |
1층 | 네트워크 접근 계층 | Ethernet, Wi-Fi…. | 컴퓨터를 물리적으로 네트워크에 연결해서 기기 간에 전송이 가능하게 한다. |
댓글