미루고 미뤄왔던 OSI 7 layers

말차·2022년 9월 6일
0

Network

목록 보기
2/2
post-thumbnail

참조한 블로그들 : link1, link2, link3, link4

0️⃣ OSI 7 layers가 뭔데?

예를 들어 파인과 레인이 세모모양의 hole을 통해 물건을 교환한다고 생각해보자. 근데 파인은 동그라미 모양의 물건을 들고오고, 레인은 네모 모양의 물건을 들고 왔다면 세모모양에 들어가지 않으므로 서로 교환할 수 없다. 이와 같이 컴퓨터도 서로의 정보를 전송하고 수신하기 위해서는 규칙이 필요하다. 이때 컴퓨터는 7가지의 과정을 거치는데 이것이 OSI 7 layers이다. 이는 규칙이다.

1️⃣ 물리계층(Physical)

물리 계층은 데이터를 전기 신호로 바꾸어 전송하는 물리적인 계층이다. 예로 우리가 "hello"라는 이메일을 전송한다고 하면, 우리는 그냥 "hello"를 전송하지 않는다. 이 헬로라는 데이터는 0과 1의 비트열로 변환되고 이는 다시 전기신호로 변환되어 전송된다.
이때, 전기신호로 변환하는 역활을 컴퓨터에 내장되어 있는 LAN이라는 친구가 담당한다.
리피터와 허브라는 장비들이 사용되는데 이에 대한 설명은 생략하겠다.

만약 레인과 파인이 만나기로 했는데, 서로가 서로의 집을 찾아가면 만나지 못하게 된다. 혹은 좁디 좁은 골목에서 내가 걸어가고 있는데, 맞은 편에서 다른 사람이 걸어오면 골목 중간에서 서로 충돌할 수 있다. 이처럼 데이터들도 전송되는 과정에서 문제가 발생하지 않기 위해 관리가 되어야 한다.
통신을 하기 위해서 필요한 LAN에, 통신에 문제가 발생하지 않도록 적용되는 규칙으로 이더넷(Ethernet)이 있다. LAN에는 MAC이라는 고유의 번호가 정해져 있다.

7 layers에서 각 계층을 거칠 때마다, 헤더라는 것이 붙는다. 헬로라는 이메일에, 이 내용이 뭔지, 이게 어디로 가는 지 등 정보들이 더해져서 붙는 것이다.
이 데이터 링크 계층에서는 이더넷 헤더트레일러를 붙인다.
이더넷 헤더에는 아래의 그림과 같은 것들이 들어간다.
트레일러는 FCS(Frame Check Sequence)라고 하는데, 데이터 전송 도중에 오류가 발생하는지 확인하는 용도로 사용한다
이렇게 데이터 링크 계층에서 이더넷 헤더, 데이터, 트레일러를 합쳐서 네트워크 케이블(물리 계층)으로 정보를 또 운반하는데, 이 단위를 이 계층에서는 프레임(Frame)이라고 한다. 참고로 이렇게 계층을 거치면서 정보에 살이 더해지는 과정을 캡슐화라고 한다.

✅ 여기까지 정리를 해보면

  • 데이터링크 계층에서 데이터에 이더넷 헤더와, FCS를 추가하여 프레임을 만들고 이를 물리계층에서 LAN이 전기신호로 변환하여 쑹 날라간다. 물리 계층은 그냥 전송하는 역활만 하고, 이의 흐름과 어디에 갈지를 결정해 주는 것은 데이터 링크계층이다.(MAC주소들을 붙여주니까)

이제 스위치에 대해서 알아보자 (힘들당 큐큑) 위에서 허브나 리피터에 대한 설명은 생략했었는데, 스위치는 알아야 한다. 스위치는 데이터링크 계층에서 동작하는 장비인데, 이 스위치 내부에는 MAC 주소 테이블(MAC address table)이라는 것이 존재한다.

MAC 주소 테이블에는 스위치의 포트 번호와 이와 인접한 컴퓨터의 MAC 주소가 등록되어 있다. 만약 컴퓨터 1에서 컴퓨터 3으로 데이터를 전송한다고 하면, MAC 주소 테이블에는 컴퓨터 1의 맥주소와 컴퓨터 3의 맥주소가 들어간다. 이때, 만약 목적지 맥 주소를 알지 못하면 스위치가 수신 포트 이외의의 모든 포트에 데이터를 송신하는데 이를 플러딩(flooding, 홍수)이라고 한다.

다시 정리 더 , 한 구간내에서 통신만 담당하는 계층이 데이터링크 계층이다.

3️⃣ 네트워크 계층(Network)

앞서 데이터 링크 계층에서는 스위치라는 장비를 이용해 스위치에 연결되어 있는 컴퓨터끼리 이더넷이라는 규칙하에 프레임을 주고 받았다. 그러나 이러한 방법으로는 "동일한 스위치에 연결되어 있는 컴퓨터끼리만" 데이터를 전송할수 있다. 즉, 스위치 너머에 있는 다른 네트워크로는 데이터를 전송할 수 없다. 이를 가능하게 하는 것이 네트워크 계층이다.

한 스위치에 묶였는 컴퓨터들의 묶음을 네트워크라고 할 때, 다른 네트워크에 있는 컴퓨터로 어떻게 정보를 전송할 수 있을까? 이때 등장하는 것이 네트워크 계층의 장비인 라우터이다. 데이터 링크에서 데이터를 보내기 위해 맥주소가 필요했다면, 네트워크에서는 IP주소가 필요하다. 또한 목적지인 IP뿐만 아니라, 어떻게 목적지에 도달할 지에 대한 경로도 필요하다. 이를 라우팅(routing)이라고 한다.

이쯤에서 (매번 대충 그렇구나 냠냠 넘어갔던)IP에 대해 알아보자

3-1. IP

우편물을 보낼때 받는 곳의 주소를 모르면 우편물을 보낼 수 없는 것처럼, 라우터에서도 목적지 주소를 알아야 한다. 바로 이게 IP(Internet Protocol)이다.
MAC주소는 48비트, 16진수로 표현되고 IP주소는 32비트, 10진수로 표현한다. IP주소는 네트워크 ID와 호스트 ID로 구성되어 있다. 네트워크ID란 ‘어떤 네트워크’인지를 나타내고 호스트 ID는 ‘해당 네트워크의 어느 컴퓨터’인지를 나타낸다. 클래스는 5개로 나뉘어져 있다. 목적에 따라서 5개 정도로 나뉘며 일반인들은 보통 A~C클래스를 사용할 수 있다.
그리고 일반적인 A~C클래스를 기준으로 설명하면 각각 8, 16, 24비트로 네트워크와 호스트 ID가 나뉘어진다.
사설 IP는 절대 사용할 수 없다. 그리고 IP는 네트워크 주소브로드캐스트 주소라는 것이 있는데, 네트워크 주소는 호스트 ID가 10진수로 모두 0인 주소를 의미한다. 그리고 브로트캐스트 주소는 호스트 ID가 10진수로 모두 255인 주소를 의미한다. 전자는 말 그대로 해당 네트워크의 대표 IP이고 후자는 해당 네트워크에 있는 모든 컴퓨터를 말한다. 따라서 이 주소들은 컴퓨터나 라우터의 IP로 할당할 수 없다.

3-2 라우터가 다른 네트워크에 데이터를 보내는 흐름

부가설명을 하자면 컴퓨터 1로 부터 데이터를 전송받은 해당 네트워크의 라우터는 라우팅 테이블을 통해 컴퓨터 4가 속해져 있는 라우터의 IP를 알아낸다.

4️⃣ 전송 계층(Transport)

지금까지 복습을 해보면 1단계에서는 허브, 2단계에서는 스위치, 3단계에서는 라우터가 필요했다. 근데 데이터를 보내다가 문제가 생기면 어떻게 할까? 1, 2, 3단계에서는 이를 해결할 수 없다. 이를 담당하는 부분이 전송 계층인데, 전송 계층은
1) 3단계에서 보낸 데이터가 제대로 도착했는지 확인하고
2) 데이터가 최종적으로 도착할 어플리케이션이 무엇인지 판단할 수 있다.

통신 방법은 연결형 통신 방법비연결형 통신 방법이 있다. 전자는 데이터를 안전하고 정확하게, 후자는 효율적으로 데이터를 주고 받는다. 예로, 동영상이나 이미지처럼 데이터가 좀 유실되어도 상관없는 분야는 비연결형 방식이 쓰인다.

4-1 TCP(Transmission Control Protocol)

데이터 링크에서는 프레임, 네트워크 계층에서는 패킷이라고 부른 것처럼 전송 계층에서의 캡슐화는 세그먼트라고 한다. 세그먼트 단계에서는 TCP헤더가 추가된다
연결형 통신은, 말 그대로 데이터를 서로 주고받을 수 있는 확실한 연결고리를 확보한 다음, 데이터를 주고 받는다. TCP헤더에는 코드비트라는 부분이 있는데 여기에 연결제어 정보가 기록된다

3 - way handshake : 연결형 통신에서 서로 "연결"하기 위해 코드비트의 ACK와 SYN을 통해 패킷 교환을 세 번 확인한다.
❶ 보내도 됩니까? ❷ㅇㅇ 보내도 됩니다 나도 보내도 됩니까? ❸ㅇㅇ 너도 보내세요 위와 같은 과정은 통신을 중단할 때에도 적용된다. 다만 이때는 코드비트의 SYN(연결확립요청)이 아닌 FIN을 보낸다 ❶ 나 종료할랍니다 ❷ 예 그러세요 ❸ 저도 종료할래요 그럼 ❹ 예 그러세요

위의 과정은 "연결"을 위한 과정이었고, 데이터를 주고 받는 중에는 어떻게 동작할까? 이때는 TCP헤더의 일련번호확인응답번호를 활용한다 데이터는 분활되어 전송되는데, 일련번호는 송신 측에서 수신 측에 "이 데이터가 몇 번째 데이터인지" 알려준다. 이를 통해 수신자는 본 데이터 중 몇 번째 데이터인지 알 수 있다.
확인응답번호는 "몇 번째 데이터를 수신했는지" 알려준다. 이를 통해 송신 측은 그 다음 보낼 데이터를 알 수 있게 된다.

세그먼트(데이터)를 하나 보낼 때마다, 매번 확인응답을 받는 것은 효율이 낮다. 이때 버퍼를 활용할 수 있다. 버퍼는 수신한 세그먼트들을 일시적으로 보관할 수 있다. 하지만 이때 유의해야 할 점은 송신하는 측이 수신하는 측의 버퍼의 이상으로 세그먼트를 보내지 말아야 한다는 점이다. 이는 상대방의 윈도우의 크기(버퍼의 한계)에 맞춰 수신하면 방지될 수 있다.

4-2 UDP(User Datagram Protocol)

TCP는 안전한 연결을 보장하는 한편 서로 확인 세그먼트를 주고 받아 효율성이 떨어진다. 이에 반해 UDP는 상대방을 확인하지 않고 연속적으로 데이터를 ㅂ내빠르게 송수신할 수 있어서 스트리밍 서비스와 같은 곳에 유용하게 사용된다.

TCP에 TCP헤더가 있었듯 UDP는 UDP헤더를 데이터에 붙인다. 그리고 이를 UDP 데이터 그램이라고 한다. 또한 UDP를 사용하면 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄적으로 보낼 수 있다. 이를 브로드캐스트라고 한다.

to be continue...

0개의 댓글