Network에 대한 이해.

Dev/Network 2012. 1. 25. 14:44

이 글은 회사에서 프로젝트를 진행하면서 Network에 대한 Concept을 확실하게 잡기 위해서 공부했던 것들을 자유연구 기간에 정리해서 적었습니다. 각 스펙에 대한 자세한 설명들은 패스하거나 링크로 대체합니다.


1. Network Protocol
Network Protocol은 '서로 다른 기기간에 데이터를 주고 받을때, 어떤 방식으로, 언제 주고 받을지를 정해놓은 규약'이다. 그러므로 어떤 목적(파일전송, 컨트롤 등)으로 데이터를 보내느냐에 따라서 사용하는 Protocol이 달라지고, 이 Protocol에 의해 주고 받는 데이터(Packet)의 구조가 결정된다.

Network Protocol은 보통 OSI 7-Layer Model에 따라서 분류하고는 하는데, 실제로는 Protocol이 먼저 나오고, 이러한 Protocol만으로는 다른 시스템과 통신하기가 어렵기 때문에(기존 Protocol은 각 회사마다 자사제품간의 통신을 위해서 정해놓았었다.) ISO에서 OSI 7-Layer Model을 제정해서 네트워크 통신이 이루어지는 각 계층에서의 역할을 정의 하였다. 이로 인해 이 Model에 따라서 구현을 하면 서로 다른 기기간에 통신이 가능해 지는 것이다. 또한 네트워크 개발자가 한 부분에 집중할 수 있도록(다른 Layer는 신경안써도 되므로) 하였기 때문에 개발이 쉬워졌다. 이러한 이유로 Network Protocol과 OSI 7-Layer Model은 정확하게 매치 되지 않는다. 하지만 OSI 7-Layer Model은 널리 쓰이고 있는 Network Concept이므로, 네트워크에 대한 이해도를 높이기 위해서는 Protocol뿐만이 아니라  OSI 7-Layer Model 도 이해해야 한다.


2. OSI 7-Layer Model
OSI 7-Layer Model의 계층별 역할은 아래 그림과 같다.

    

각 계층에서의 역할은 아래 위키피디아 링크에서 자세하게 설명하고 있다.
*. 위키피디아 - OSI 모형

 
3. Packet의 구조.

Network를 통해서 각 기기간에 Packet이 오고 간다. 가장 많이 쓰이는 TCP/IP Protocol의 Packet의 구조를 대략 그림으로 나타내면 아래와 같다.
AH     : Application Header 
TCPH   : TCP Header 
IPH    : IP  Header 
EtherH : Ethernet Header 
EtherT : Ethernet Trailer 
                               +-----------+ 
                               | user data | 
                               +-----------+ 
                              ↓          ↓  
                        +------+-----------+            +-------------+ 
                        |  AH  | user data |            | application | 
                        +------+-----------+            +-------------+ 
                       ↓                 ↓                  ↓ 
                 +------+------------------+            +-------------+ 
                 | TCPH | application data |            | TCP         | 
                 +------+------------------+            +-------------+ 
                ↓                        ↓                  ↓ 
          +------+------+------------------+            +-------------+ 
          | IPH  | TCPH | application data |            | IP          | 
          +------+------+------------------+            +-------------+ 
         ↓                               ↓                  ↓ 
 +--------+------+------+------------------+--------+   +-------------+ 
 | EtherH | IPH  | TCPH | application data | EtherT |   | Ethernet    |  
 +--------+------+------+------------------+--------+   +-------------+ 
       *. 출처 : joinc.co.kr - TCP/IP 소개 3

실제로 보내고자 하는 데이터들은 위의 그림과 같이 Packaging되서 네트워크를 통해서 보내진다. 각 헤더마다 Source/Destination Address정보가 있는데, 이 정보의 타입이 헤더마다 다르다. 정리하면 아래와 같다.

Ehternet Header 
Mac Address
IP Header       - IP Address
TCP Header      - Port Number


4. List of Network Protocol
위에서 Network Protocol들과 OSI 7-Layer Model은 정확하게 매치되지 않는다고 했었다. 하지만 거의 매치 되므로 이해를 위해서 
OSI 7-Layer Model에 맞춰서  Network Protocol들을 분류한 글을 링크한다.
*. 위키피디아 - List of network protocols 


 
5. 자주 쓰이는 Protocol들.
자주 쓰이는 Protocol들과 회사 업무에서 필요한 Protocol들에 대해서 정리를 하였다.

A.) IP
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/TCP_IP/IP_Header 

B.) ARP
ARP(Address Resolution Protocol)는 IP주소에 대응하는 MAC주소값을 구하기 위해서 사용하는 Protocol이다. 즉 한 기기에서 192.168.100.111이라는 IP로 데이터를 보낼려고 하지만 MAC주소값을 모르기 때문에 데이터를 보낼수가 없다. 이를 알기 위해서 네트워크에 연결된 기기 전체에 ARP Packet을 보내게 된다. 그럼 해당 IP를 가지고 있는 기기가 이 Packet을 읽고 이에 대해서 답(RARP)을 하게 된다. 해당 IP가 아닌 기기들은 이 ARP Packet을 무시한다. ARP Protocol의 Packet은 아래의 구조를 가지게 된다.
 +--------+------+--------+
 | EtherH | ARPH | EtherT |
 +--------+------+--------+
ARP에 대한 Spec은 아래 링크된 PDF파일에 자세하게 설명되어 있다.
http://forum.falinux.com/pds/data-s2410/No16-3.pdf 

C.) TCP, UDP
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Network_Programing/Documents/IntroTCPIP 
http://blog.naver.com/PostView.nhn?blogId=kjs077&logNo=10112123635 


6. 데이터 전송 방식(Unicasting, Broadcasting, Multicasting)
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Network_Programing/Documents/MultiCast 






: