리코딩 : 네트워크(Network)

네트워크(Network) - 통신 방식, MAC / IP주소, TCP / UDP 배운 내용 정리 2

BreezeBm 2021. 11. 15. 18:48

Photo by  Robynne Hu  on   Unsplash

1. 통신방식

출발지에서 도착지로 데이터를 전송할 때 사용하는 통신방식에는 4가지가 있다. 유니캐스트, 브로드캐스트, 멀티캐스트, 애니캐스트이다.

1) 유니캐스트

출발지와 도착지가 1 : 1로 통신을 한다. 명확하게 출발과 도착이 정해져 있다. 

2) 브로드캐스트

1 : N으로 통신한다. 도착하는 주소가 "모든"으로 표기가 되어있는 통신이다. 동일 네트워크에 존재하는 모든 호스트가 목적지 이다. 유니캐스트로 통신하기 전에 상대방의 정확한 위치를 알기 위해서 사용한다.

3) 멀티캐스트

1 : 그룹으로 통신한다. 한개의 출발지에서 다수의 특정 목적지로 데이터를 전송한다. IPTV와 같은 실시간 방송을 볼 때 사용한다. 

4) 애니캐스트

1 : 1으로 통신을 한다. 주소가 같은 호스트들 중에서 가장 가깝거나, 효율적으로 서비스할 수 있는 호스트와 통신하는 방식이다. 가장 가까운 DNS 서버를 찾을 때 사용한다. 유니캐스트와의 차이는 통신 후보가 다르다. 유니캐스트는 출발하는 곳과 도착하는 곳이 한곳이지만 애니캐스트는 같은 도착 주소를 가진 서버가 여러대가 있기 때문에 후보들이 많이 있다. 


2. MAC 주소(물리 주소)

MAC주소는 2계층 통신을 위해 네트워크 인터페이스에 할당된 식별자 이다. MAC주소는 하드웨어에 고정되어 나온다. 네크워크 구성요소 마다 다른 주소를 가지고 있다. MAC주소는 48비트의 16진수 12자리로 표현된다.

네트워크를 접속하는 기계들은 MAC주소라는 물리적인 주소가 있어야한다. 그리고 이 주소를 통해서 통신을 한다. 네트워크 인터페이스 카드는 MAC주소를 가지고 있고, 전기 신호가 오면 데이터 형태로 변환해서 내용을 구분한다. 그리고 도착지 MAC주소를 확인한다. 주소를 확인했을 때, 나에게 온게 아니면 폐기를 하고 맞게 왔다면 처리해야할 주소로 상위 계층으로 넘겨준다. 


3. IP 주소(논리 주소)

OSI에서 주소를 갖는 계층은 2와 3계층이다. 2계층은 위에 기록했던 물리주소인 MAC주소, 3계층은 논리 주소인 IP주소를 사용한다. 특징으로는 IP주소는 사용자가 변경을 할 수 있고 그리고 그룹을 의미하는 네트워크 주소와 호스트 주소로 나뉜다. 

IP 주소에는 32비트인 IPv4와 128비트인 IPv6가 있다.  IPv4는 4개의 옥텟(Octet: 8비트)으로 이루어져 있고, 각 옥텟은 .(온점)으로 구분한다. 10진수로 표기하기 때문에 옥텟은 0~255까지 쓸 수 있다.

호스트 주소는 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소이고, 네트워크 주소는 호스트들을 모은 네트워크를 지칭한다. 흔히 네트워크가 동일할 때 로컬네트워크라고 말한다. MAC주소와는 다르게 구분하는 경계가 고정되어 있지 않다. 그렇기 때문에 필요한 IP개수에 따라서 네트워크의 크기를 다양하게 할당할 수 있는 클래스 개념을 도입했다.

A 클래스는 네트워크를 표현하는 부분이 1개의 옥텟, 호스트는 3개의 옥텟이기 때문에, 256(2의 8제곱)개의 네트워크, 네트워크 한 개당 16,777,216(2의 24제곱)개의 호스트 주소를 가진다. 차례대로 B클래스는 65,536(2의 16제곱)개의 네트워크 네트워크 한 개당 65,536(2의 16제곱) 그리고 C클래스는 16,777,216개의 네트워크 주소 네트워크 한 개당 256개의 호스트를 가질 수 있다. 

ABC 클래스의 경우에는 맨 앞에 있는 옥텟의 주소만 보고 구분할 수 있다. 0 ~ 127면 A클래스(첫 옥텟을 2진수로  표현했을 때, 맨앞자리가 0) B클래스는 128 ~ 191(첫 옥텟을 2진수로 표현했을 때, 맨 앞두자리가 10) C클래스는 192 ~ 223(첫 옥텟을 2진수로 표현했을 때, 맨 앞두자리가 110)이다.


4. TCP / UDP

4계층의 프로토콜은 여러 애플리케이션 프로세스 중 통신해야하는 목적지 프로세스를 정확히 찾아가고 패킷 순서가 바뀌지 않도록 조합해서 원래 데이터를 만들어내기 위한 역할을 합니다. 데이터를 보내고 받는 인캡슐레이션과 디캡슐레이션 과정에서 각 계층에서 헤더가 추가되고 정보가 들어간다. 중요한 것은 각 계층에서 정의하는 정보(동일 계층에서 사용하기 위한 정보)와 상위 프로토콜 지시자 정보를 넣어야 한다. 상위 계층의 프로토콜 지시자를 넣어야 상위 계층으로 갈 때 정확히 보낼 수 있다. 2계층은 이더타입, 3계층은 프로토콜 번호, 4계층은 포트번호가 상위  프로토콜 지시자이다. TCP 프로토콜은 패킷을 분할하고 조합하기 위해 시퀀스 번호와 ACK번호를 사용한다. 

1) TCP

TCP 프로토콜신뢰할 수 없는 공용망에서도 정보유실 없는 통신을 보장하기 위해 세션을 안전하게 연결한다. 또한 데이터를 나누고 나누어진 패킷이 잘 전달 됬는지 확인하는 기능이 있다. 패킷(sequence number)에 번호를 주고 잘 전송이 되었는지에 대해 응답(ack)한다.또한 전송 크기까지 고려해서 통신한다. 

TCP는 사전 연결 작업을 진행한다. 3번의 패킷을 주고받으면서 통신을 준비하기 때문에, 3Hand-Shake라고 부른다. 상황에 따라 상태를 알려주는 이름이 있다. 우선 접속을 받을 수 있는 LISTEN(대기상태), Syn패킷을 보냈을 때는 SYN-SENT, 보낸 sync를 받은 쪽에서는 SYN-RECEIVE, 서로 응답을 받으면 ESTABLISHED로 나타낸다.

그리고 기존 통신과 새로운 통신을 구분해야 하기 때문에 헤더에는 6가지의 플래그 정보를 입력해서 넣는다.

1. SYN

- 연결 시작시 사용, 연결이 시작될 때 SYN플래그에 1로 표시해서 전송

2. ACK

- 번호가 유효할 경우 1
- 초기 SYN이 아닌 모든 패킷에 대한 응답, 1로 표기

3. FIN

- 데이터 전송을 마친 후 정상적으로 양방향 종료 시 1

4. RST

- 연결 강제 종료를 위해 일방적으로 끊을 때 사용, 연결 종료 시 1

5. URG

- 긴급 데이터인 경우 1로 표시

6. PSH

- 서버 측에서 전송할 데이터가 없거나 데이터를 버퍼링 없이 즉시 전달을 지시할 때 사용

 

그림을 살펴보면

1. 출발지에서 통신을 요청하는 SYN A를 보낸다.

2. 도착지에서는 출발지에서 요청을 받고 수락의 의미로 ACK A+1과 SYN B를 보낸다.

3. 도착지에서 받은 패킷을 수락하고 ACK B + 1로 다시 보내서 연결을 확립한다.

2) UDP

UDP는 데이터 전송을 보장하지 않는 프로토콜로 제한된 용도로만 사용된다. 음성이나 실시간 스트리밍 같이 시간에 민감한 프로토콜이나 애플리케이션을 사용하는 경우에 쓰인다. 음성이나 동영상은 연속된 데이터를 보내는 것이 아니라 잘게 분할된 데이터가 전송되는 형태이다. 그래서 1초 동안 수십회의 정지 영상이 빠르게 바뀌면서 눈에는 마치 움직이는 영상처럼 보이는 원리를 이용한다. 예를 들어 화상으로 회의를 하고 있는데 일부의 데이터가 사라지더라도 재접속을 하기 위해 끊기는 것보다 시간에 맞추어서 전송되는게 중요한 경우 사용된다. 

TCP UDP
연결지향 비연결형
오류 제어 수행 오류제어 수행 x
흐름 제어 수행 흐름제어 수행 x
유니캐스트 유니캐스트, 멀티캐스트, 브로드캐스트
데이터 전송 실시간 트래픽 전송