글 작성자: Sowhat_93

원격 통신시 거치는 과정을 계층으로 보기좋게 나타낸 것이 OSI 7 계층과 TCP/IP 4계층 이다.

(표준 위원회가 있다고 하고 거기서 무슨 일을 한다고는 하던데 잘은 모르겠다.)

 

OSI 7계층 과 TCP 4계층

위로 갈수록 소프트웨어에 가까워지며,

아래로 갈수록 하드웨어에 가까워지는 특성은 같다.

 

실제로 네트워크 프로그래밍시에 가장 많이 신경을 쓰게 될 부분은

TCP 계층의 Application 과 Transport 계층이다.

 

각 계층은 통신목적지를 구분하기 위해 각기 다른 주소방식을 사용하며,

또한 각기 다른 통신규약(프로토콜)을 이용한다.

 

TCP/IP 4계층의 Network Interface 와 OSI 7의 Datalink Layer는 MAC 어드레스를 사용하며,

이 계층에서 사용하는 Protocol을 통칭해 Ethernet 프로토콜이라고 한다.

(혹은 MAC 프로토콜이라고도 한다.)

Ethernet, Ethernet 2, FastEthernet 등이 있다.

 

TCP/IP 4계층의 Internet 계층, OSI 7의 Network Layer는 IP 주소를 사용하며, 

이 계층에서 사용하는 Protocol을 통칭해 IP 프로토콜이라고 한다.

워낙 IPv4헤더를 IP 헤더라고 부르다보니 혼동을 고려해 어떤 사람들은 L3 프로토콜이라고도 부르는듯 ?

IP 프로토콜은 수많은 종류가 있지만 ICMP, ARP, RARP, IPv4, IPv6 등이 있다.

사실 프로토콜이 엄청나게 많다. 아래를 참고.

https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers

 

List of IP protocol numbers - Wikipedia

 

en.wikipedia.org

 

TCP/IP 4계층의 Transport 계층, OSI 7의 Transport Layer는 Port 번호를 이용하며, 

이 계층에서 사용하는 Protocol을 통칭해 Transport 프로토콜(전송 프로토콜)이라고 한다.

많지만 보통은 TCP, UDP 를 많이 보게 된다.

 

Application 의 Protocol 은 상당히 여러가지 의미를 가질 수 있는데, Windows의 Handle이나

OS에서 관리하는 Process ID등이 될 수 있을 것 이다.

또한 소켓통신시 자체적으로 정한 Protocol Code 등도 여기에 속한다고 볼 수 있다.

이렇게 애매한 이유는 TCP/IP 4계층에서는 OSI 7 Layer처럼 구분지어 놓지 않았기 때문이다.  

 

A의 Application 과 B의 Application이 통신한다고 하자. 이때 'ABCD'라는 데이터를 전송하려 한다고 하자.

이때 'ABCD' 를 누구에게 어떻게 보낼지가 막막하다.

따라서 목적지를 특정하기 위한 주소체계를 이용하며,

이때에 각 계층이 수행하는 행동을 주소 특정의 개념으로만 간단하게만 나타내어보자.

Transport : 목적지가 어떤 Port를 사용하고있는지 기입한다.

Internet : 목적지의 IP Adress는?

Ethernet : 목적지의 Mac Adress는?

 

 

A의 Application에서 만들어진 'ABCD' 라는 데이터는 점차 하위 계층으로 내려가며 

Transport , Internet , Network Interface 에서 사용하는 주소방식과 Protocol에 관련된 정보를 덧 붙여 나가며 ,

이를 각 계층의 Header라고 부른다. Header가 모두 준비되면 Data는 Wire 를 통해 나간다.

준비된 IP Address, Mac Address, 를 이용해 B의 머신을 찾고,      

그 후 B의 Network Interface에 도착한다. (흔히들 패킷이 랜선으로 들어온다고 하지 않는가?)

목적지 Port 번호로 전달되고, B 의 App이 모든 하위계층의 헤더가 없어진 뒤 깔끔한 'ABCD'를 받게되면

전송은 마무리된다.

각 계층의 Header는 주소의 특정 이외에도 다양한 일을 수행 하며 이는 관련된 서적을 참고하자.