#오류에 대해 지적해 주시면 수정하겠습니다.

 

MAC address

MAC address는 OSI 7 계층 중 데이터 링크 계층에서 사용하는 물리적인 주소이다.

 

 

 

 

 

 

OSI 7 계층은 각각의 층들이 나름대로의 단위로 인코딩, 디코딩을 하는데, 데이터 링크 계층은 프레임 단위로 송수신 한다.  프레임 단위로 만들기 위해선 데이터 앞뒤에 특정한 비트열을 붙이게 되는데 이때 앞에 붙는 비트열을 헤더, 뒤에 붙는 비트열을 트레일러라 한다. 헤더는 목적지를 명확하게 하는 역할을 하고, 트레일러는 호옥시 놓친 비트가 있지는 않은지 검사한다.

 

이때 헤더를 좀더 자세히 보면 DA(destination address), SA(Source address)라는 정보가 들어있음을 알 수 있다.

이 주소가 바로 Mac 주소이다.

 

 

 

 

Mac 주소는 총 6옥텟으로 구성되어있다. 옥텟이란, 8bit, 1byte를 의미한다. 초기의 컴퓨터들은 1바이트가 꼭 8bit를 의미하지 않았기 때문에 옥텟이라는 단위가 생겼다고 한다! 하지만 지금은 그냥 8bit다 라고 생각하면 된다고 한다.

앞에 3옥텟은 만든 회사를 의미, 뒤에 3옥텟은 네트워크 장비의 일련번호를 의미한다고 한다. 이 주소는 고유하기 때문에 각각의 네트워크 장비를 구별할 수 있다.

마치 명품을 사면 받는 시리얼 번호같다고 느껴졌다. 

 

 

 

 

 

 

 


 

 

IP Address

IP address는 OSI 7 계층 중 네트워크 계층에서 사용하는 주소이다.

 

 

 

 

위에서 말한 것처럼, OSI 7 계층은 각각의 층들이 나름대로의 단위로 인코딩, 디코딩을 하는데, 네트워크 계층은 패킷 단위로 송수신 한다.  이때 패킷단위로 만들어주는 IP(internet protocol)의 헤더를 보면 아래와 같다.

 

 

 

 

음.. 일단 확실한건, 여기에도 특정 네트워크를 찾아가기 위한 주소가 포함된다는 것이다!

이때 사용되는게 IP주소 이다.

 

IP주소는 4옥텟으로 이루어져있다. (여기서는 IPv4로 생각했다.)

IP주소는 Public IP와 Private IP로 나뉘는데, Public IP는 세계에서 유일한 공인된 주소고, Private IP는 회사 처럼 어떠한 내부망(네트워크) 안에서 사용되는 주소로 그 네트워크 안에서 유일하다. 

유일하다는 점은 MAC주소와 동일하지만, MAC주소는 시리얼번호같은거라 한번 부여되면 절때 바뀌지 않지만, IP주소는 바뀔 수 있다는 점이 다르다.

 

 

 

 

 

 


 

 

왜 둘 다 있어야 하나?

그럼 약간의 의문이 든다. 사실 IP주소나 Mac주소나 결국은 다른 컴퓨터와 통신을 하기 위해 사용되는 주소라는 것이다.

게다가 둘다 고유하다. 그러면 Mac주소만 있어도 목적지 컴퓨터를 찾아갈 수 있고, IP주소만 있어도 목적지 컴퓨터를 찾아갈 수 있다는게 아닐까?

 

이에 대한 나의 결론은.. 둘이 다른 계층에서 쓰이기 때문에 둘 다 필요하다는 것이다.

마치 우리는 개개인을 주민등록번호로 구분할 수 있으나, 학교에서는 학번을 쓰고, 회사에서는 사번을 따로 부여받지 않는가? 

애초에 OSI 7계층이 각 네트워크 장비들의 역할을 분명히하고, 독립적으로 나누는데 의의가 있었으므로 그 주소 체계 또한 분리되어있는게 아닌가,,, 라는 결론을 내렸다.

 

결론적으로, 통신을 하는데 송신지의 IP주소와 MAC주소, 목적지의  IP주소와 MAC주소가 꼭 필요하다.

 

 

 

여기서 드는 의문점!

 

우리는 매일같이 여러 사이트에 방문한다. 일단 송신지의 IP주소와 MAC주소는 안다. 내 컴퓨터니까.

목적지의 IP주소도 안다. DNS를 거쳐 문자열이 되었지만, IP주소나 다름없으니까.

그럼 MAC주소는 어떻게 알지..?

 

이렇게 IP주소만으로 MAC주소를 알아내는 프로토콜이 ARP(Address Resolution Protocol)이다.

그냥 추가적으로 넣어봤다.

'Network' 카테고리의 다른 글

[Network스터디]TCP와 UDP  (0) 2021.09.19
[Network스터디]OSI 7 Layers  (0) 2021.09.18

#오류에 대해 지적해 주시면 수정하겠습니다.

 

4계층 : Transport Layer

TCP와 UDP는 OSI 7계층 중 4계층인 전송계층에 속하는 프로토콜이다. 

https://jinniepark.tistory.com/57

 

[Network스터디]OSI 7 Layers

#오류에 대해 지적해 주시면 수정하겠습니다. OSI 7 Layers은 왜 필요해? 아마 컴퓨터공학을 전공했다면, 한번쯤을 들어봤을 OSI 7계층,, 이거는 왜 존재해서 날 힘들게 하는 걸까? 자 예를들어 차가

jinniepark.tistory.com

OSI 7계층은 해당 글에서 자세히 다루었으나 4계층에 대해서 간단하게 알아보자면, 어떤 프로세스로 전달 될지를 결정하는 계층이다. 프로세스는 포트번호로 구별할 수 있다.

 

 


 

 

TCP의 등장배경

일단 TCP를 먼저 살펴보도록 하겠다. 일단 TCP는 어째서 등장하게 되었을까?

1970년대 냉전 당시 네트워크는 회선교환방식이라는걸 썼는데, 말그대로 회선을 교환하는 방식이었다.

만약에 A가 C랑 통신하다가 B랑 통신하고 싶다면, C와 연결되어있던 회선(케이블)을 빼서 B랑 연결해주면 되는거였다.

이러한 방식은 회선의 효율이 낮을 뿐더러 저 케이블에 문제가 생긴다면, 네트워크가 끊기는 거였다.

전쟁중이었던 그당시 상황을 생각해보면 이러한 문제점은 상당히 큰 위험사항이었다고 한다.

그래서 관심을 가지게 된게 핵이 터져도 끊기지 않는 연결이었고 이후 고안한 방식이 패킷 교환 방식이다.

 

패킷 교환 방식은 데이터를 잘게 쪼개서 여러 회선으로 보내는거다. 그러면 이렇게 하나쯤 문제가 생겨도, 데이터가 좀 유실 될 수 있겠지만 네트워크 전체가 마비된다던가 그런일은 없다. 이 아이디어를 실현하는 프로토콜이 바로 TCP.

저기 회선하나 문제가 생겨도 A와 B는 통신할 수 있다.

 

 


 

 

TCP

위와 같은 이유로 tcp는 segment단위로 쪼개서 보낸다. 그리고 세그먼트마다 앞에 헤더가 붙게 된다. 

한 프로토콜에 대해 자세히 알고 싶다면 헤더를 살펴보는 것이 가장 효과적인 방법인것 같다. 그러므로 헤더의 구성요소에 대해 자세히 봐보도록 하자.

 

 

 

TCP의 헤더

Source Port : 보내는 프로세스의 포트번호

Destination Port : 받는 프로세스의 포트번호 

Sequence number : 다음에 이어지는 세그먼트 (패킷을 쪼개서 보내니까 이런부분이 필요한가보다)

Acknowledgment Number : 다음에 받기를 기대하는 세그먼트

HeaderLength : options의 길이가 가변적이기 때문에 어느부분이 헤더고 어느부분이 데이터인지 구별하기 위해 헤더 길이 정보를 가진다.

ACK/SYN/FIN : 커넥션을 만들때/종료할 때 사용하는 비트 (이건 handshake때 자세히 나온다)

Window Size : 감당가능한 패킷의 양   

더보기

#TCP교통체증과 서비스 붕괴사건

1986년에 있었던 일로 그 당시 최첨단 회선이 효율이 10분의 1밖에 안난 사건이라고 한다. 그 당시 라우터가 문제였는데, 라우터가 과부하가 걸려서 엄청나게 많은 패킷을 놓치고 있던 것이었다. 근데 패킷을 놓치면 tcp는 상당히 타격이 크다. 첨부터 다시보내야하니깐.(이건 TCP의 통신방식을 좀 알아야한다.) 그것은 더더욱 과부하를 만들고 악순환의 반복이다. 이때 등장한 사람이 Van Jacobson라는 사람이다. 이분이 제안한 방법이.. 패킷을 마구 보내지말고 일단 1개씩 보내면서 서로 처리 가능한 패킷 개수를 조절하는 것이다. 이거는 마치 창문을 열고 닫으면서 조절하니까 window size라고 한다. 이 정보로 서로 감당 가능한 패킷의 양을 조절하는 것이다. 뭐쨋든 이런식으로 패킷 양을 조절한다는 점.

Checksum : 오류를 감지하는 부분

 

 

 

UDP의 등장배경

TCP는 안정적이긴 하지만 너무 느리고, 용량도 컷다. 어떤 서비스는 안정적인것보다 속도가 더 중요하다.

그래서 등장한게 UDP. 사실 UDP프로토콜이라기보단 그냥 IP에다가 포트번호만 붙인 수준이라고 한다.

 

UDP

 

 

 


 

 

 

UDP의 헤더

Source Port : 보내는 프로세스의 포트번호

Destination Port : 받는 프로세스의 포트번호 

Length : 데이터의 길이

Checksum : 오류를 감지하는 부분

 

 

 

 


 

TCP와 UDP의 비교

TCP는 확실하고 신뢰있는 통신을 하지만 용량이 많고 느리다.

UDP는 신뢰성은 없어도 용량이 적고 빠르다.

 


Resources

https://www.youtube.com/watch?v=

https://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9CikDVGYp5dhg

https://brunch.co.kr/@swimjiy/35

https://evan-moon.github.io/2019/11/10/header-of-tcp/

'Network' 카테고리의 다른 글

[Network스터디]IP address/MAC address(+깨알ARP)  (0) 2021.09.26
[Network스터디]OSI 7 Layers  (0) 2021.09.18

#오류에 대해 지적해 주시면 수정하겠습니다.

 

OSI 7 Layers은 왜 필요해?

아마 컴퓨터공학을 전공했다면, 한번쯤을 들어봤을 OSI 7계층,,

이거는 왜 존재해서 날 힘들게 하는 걸까?

 

자 예를들어 차가 고장났다고 생각해보자. 그러면 어디가 고장났는지 찾아볼 것이다.

봤더니만 타이어가 펑크가 난거였다. 그러면 타이어만 교체해 준다면 차가 다시 작동할 것이다.

이런일이 가능한 이유는 이미 각각 부품이 하는일이 명확하게 정해져 있기 때문이다.

하지만 해당 부품이 다른 기능에 관여한다면 어떨까? 예를 들어 어떤 타이어는 엔진에도 관여하는 것이다!

그럼 그 다른 부품까지 전부 갈아야 하는거다. 뿐만 아니라 고치는 사람 입장에서도 굉장히 힘든 일이 될꺼다. 어떤 회사의 어떤 부품은 어디까지 관여하고 또 관여 안하는지 모두 알아야 하니까!

https://jhnyang.tistory.com/194

 

이는 네트워크의 세계에서도 마찬가지다.

인터넷이 안된다고 하자. 만약 어떤 장비가 어떤 부분에 관여할지 정해져있지 않다면 우리는 정말 모든 회선과 부품을 바꿔야 할 수 도있다. 초기 네트워크 장치는 실제로 중구난방이었다. 회사 장비마다 호환되지않고 맡은 역할이 제각각이었다. 이러한 문제를 개선하기위해 국제표준화기구(ISO)1984년에 OSI 7계층을 발표한 것이다!

 

 

 


 

 

OSI 7 계층

모든 계층은 독립적이며, 하위 계층의 기능은 이용하고, 상위 계층에게는 기능을 제공한다.

모든 계층에는 기본적으로 인코더와 디코더가 있다. 이제 1계층 부터 살펴보자.

 

 


 

 

1계층 :  Physical Layer

아래와 같이 두 컴퓨터가 통신을 하고 싶다. 

 

이게 근데 디지털 신호는 바로 전선으로 전달될 수 없다. 그래서 데이터를 아날로그 신호(전기신호)로 바꿔서 전송한다. 그리고 전선이 감당할 수 있는 만큼 적당한 단위로 끊는일도 필요하다. 이러한 일들을 하는 것이 1계층의 인코더, 디코더라고 한다.

다음과 같이 데이터가 1계층 인코더를 거쳐 아날로그 신호가 되어 전선을 타고 목적지에 도착한다.

그럼 목적지에 있는 1계층 디코더가 아날로그 신호를 원래 데이터로 바꿔준다. 해당 과정은 모두 하드웨어적으로 구현되어있다고 한다!

 

 

 

 

2계층 : Data Link Layer

이번에는 좀 더 많은 컴퓨터들이 통신을 하고 싶다!

아래에 체크 표시된 컴퓨터끼리 통신이 하고싶다.

 

 

 

이제는 목적지 주소가 어딘지 명확하게 할 필요가 있어졌다. 데이터의 앞뒤에 특정한 비트열을 붙여서 목적지도 명확하게 하고 호옥시 놓친 비트가 있지는 않은지 검사한다. 이때 사용하는 주소가 MAC주소다. 또한 앞에 붙은 비트열을 Header, 뒤에 붙은 비트열을 trailer라 한다.

그러한 형태로 만드는게 2계층 인코더가 해야할 일이다! 또한 그러한 형태(단위)를 Frame이라 한다.

 

 

 

통신하는 과정을 보자면, 출발지에서 데이터를 2계층 인코더가 Frame단위로 인코딩한다. 그 인코딩 된것을 1계층 인코더가 아날로그 신호로 변경해서 목적지로 이동한다.

그럼 목적지에 있는 1계층 디코더가 아날로그 신호를 디지털 신호로 변경하고, 2계층 인코더가 Framing되어있는 데이터를 디코딩한다.

 

 

 

 

 

3계층 : Network Layer

이번에는 아까보다 좀 더 많은/더 멀리있는 컴퓨터와 통신을 하고 싶다!

아래에 체크 표시된 컴퓨터끼리 통신이 하고싶다.

 

역시 해당 컴퓨터를 찾아가기 위해서는 주소가 필요하다. 이때 주소를 IP주소라 부른다. 2계층에서 MAC주소를 아는데, IP주소를 따로 알아야할까? 이에 대해서는 IP주소와 MAC주소에 관한글에서 더 자세히 다루겠다.

어쨌든, IP주소가 필요하다. 

3계층의 인코더는 데이터에 IP주소를 붙여준다. (IP주소만 있는건 아니다)

이러한 단위를 Packet이라 한다.

 

위에 그림과 같이, 출발지에서 데이터를 우선 3계층 인코더가 packet단위로 만들어주고, 2계층 인코더가 앞뒤로 비트열을 붙여 framing해주고 1계층에서 아날로그 신호로 변경해 목적지로 보낸다.

마찬가지로 목적지에서는 1계층 디코더가 제일먼저 아날로그 신호를 디지털신호로 변경해주고, 2계층 디코더가 frame의 헤더와 트레일러를 분리하고, 3계층 디코더가 데이터만 남기고 디코딩해준다.

3계층은 1.2계층과 달리 운영체제의 커널에 소프트웨어로 구현되어있다.

 

 

 

 

4계층 : Transport Layer

3계층까지로 목적지까지 도착하는건 가능해졌다. 하지만 목적지 컴퓨터의 어느 프로세스에게 줘야할지는 알 수가 없다. 

목적지 컴퓨터에 디스코드와 카카오톡이 있다고 할 때 우리는 데이터를 카카오톡에게 줘야한다고 해보자.

 

 

 

 

프로세스끼리도 각각을 식별할 수 있는 번호가 있는데 그 번호를 포트번호라 한다.

그럼 목적지에 원하는 프로세스에게 데이터를 전송하기 위해서 포트번호가 필요하다는 것을 납득할 수 있다.

4계층 인코더는 포트번호를 붙여 segment/datagram단위로 인코딩한다. 각각 계층마다 해당 역할을 하는 프로토콜이 여러가지가 있는데, 4계층에는 대표적으로 TCP라는 프로토콜과 UDP라는 프로토콜이 있다. TCP에서는 인코딩 단위를 segment라 하고, UDP에서는 Datagram이라 한다. 어쨌든 둘다 포트번호는 포함한다.

4계층까지 포함한 통신과정을 보자면 아래와 같다.

목적지에 있는 데이터를 4계층 인코더가 인코딩 하고 이하 3계층과 같다.

목적지에 도착해서도 1계층->2계층->3계층->4계층 순서로 디코딩 과정이 진행된다.

 

 

5,6,7계층

사실 5,6,7계층은 명확하게 이해가 되지 않았다.

통신 관점으로 설명을 하였는데, 현재 사용하는건 TCP/IP모델이라 그런걸까 각 계층에 대한 명확한 설명은 찾지 못했다.

짧게 설명하자면 다음과 같다.

 

5계층 : Session layer전송단위는 message이며, 실제 이용자의 응용프로그램 사이에서 세션이라 불리는 연결을 확립하고 유지하며 동기화하는 기능을 수행한다.

 

6계층 : Presentation layer전송단위는 message이며, 송,수신자 둘 다 데이터를 이해할 수 있도록 데이터의 표현방식을 바꾼다.

 

7계층 : Application layer

전송단위는 message이며, 최 상위 계층으로 사용자가 네트워크에 접속하는 것을 가능하게 한다. 그리고 사용자의 인터페이스를 제공한다.

 

명확하게 이해가 되는 그날까지,,,,

 


 

마무리

OSI 7계층은 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이며 다음과 같이 계층구조를 가지고 있고 각 계층은 다른 계층으로부터 독립적이다.

캡슐화 되는 방향은 7->1방향이며, 반캡슐화는 1->7방향으로 이루어진다.

 

 

 

 

 


References

https://www.youtube.com/watch?v=dK5cRUCTDqE

https://www.youtube.com/watch?v=1pfTxp25MA8

https://jhnyang.tistory.com/373

https://jhnyang.tistory.com/403?category=947031

https://jhnyang.tistory.com/194

https://hahahoho5915.tistory.com/12

'Network' 카테고리의 다른 글

[Network스터디]IP address/MAC address(+깨알ARP)  (0) 2021.09.26
[Network스터디]TCP와 UDP  (0) 2021.09.19

+ Recent posts