CS 뿌수기는 1주일에 하나의 토픽에 맞추어 자료를 조사하고 발표하는 스터디입니다.
우리는 저번 포스팅을 통해서 OSI Layer 에 대해서 알아보았습니다.
그렇지만, 의문이 들것입니다.
그래서 OSI Layer 를 통해서 어떻게 데이터가 이동하는데? (제가 그랬습니다 ^^..)
이번 포스팅은 어려운 내용은 아예 삭제했습니다.
오로지, 네트워크상에서 어떻게 데이터가 이동하는지, 흐름만 가져가보도록 하겠습니다.
OSI Layer 와 TCP/IP Layer 입니다. 굉장히 유사하죠.
그리고 TCP/IP Layer 는 업데이트 되었습니다.
이렇게 말이죠. Data Link Layer 이 생겼습니다! 그리고 Internet Layer 은 Network Layer 로 변경되었습니다.
OSI Layer 와 유사해졌어요!
저희는 TCP/IP Updated 버전을 이용하여 데이터 이동을 알아볼 것 입니다.
하지만 그전에 TCP, IP 그리고 레이어들에 대해서 간단히 알아보겠습니다!
TCP는 전송 제어 프로토콜이며, 다른 기기로 데이터를 전송하는 것을 담당합니다.
TCP는 데이터의 가장 작은 단위인 패킷에 번호를 붙여 전송하며 받는 쪽에서 데이터 전송이 잘 안되었어. 라고 하면 다시 보내주는 프로토콜입니다.
IP는 데이터를 배달할 수 있는 주소입니다. 그리고 TCP는 이러한 데이터를 추적하고 관리합니다.
TCP / IP는 이정도만 깔고 가겠습니다.
그리고 우리는 5가지 계층에 대해서 알아볼 것 입니다.
하나하나 자세히 설명하기엔 전 포스팅에 설명했기때문에 간단히 하겠습니다.
OSI 7 Layer
계층에 대한 자세한 설명은 위 링크에 있습니다!
응용 계층은 사용자 인터페이스 뿐만 아니라 이메일, 파일 접근 및 전송을 담당하는 계층 입니다.
전송 계층은 전송을 담당하는 계층입니다. 전송 계층에는 TCP 뿐만 아니라 UDP 전송 방식이 있습니다.
인터넷 계층은 네트워크 간의 패킷 전송을 관리합니다. 인터넷 통신 중에 오류가 났는지, 어떤 오류인지에 대한 알림과 관련된 메시지를 전달하는 것이 목적인 계층입니다.
데이터 링크 계층은 네트워크 내의 연결된 기기가 연결이 되어있는지 확인해줍니다.
물리 계층에서는 아날로그 신호는 전기신호로, 전기신호는 아날로그 신호로 변환해주는 작업을 합니다.
우리는 이제 대망의 데이터의 이동에 대해서 학습할 것 입니다!
주의할점 : 해당 포스터는 데이터의 이동에 대해서 학습합니다. 그 이상은 기술하지 않을 것 입니다.
자, 우리는 데이터를 전송합니다. 응용 계층의 메일, 인터넷 서비스를 이용해서요!
이제 데이터는 응용 계층에 있습니다.
응용 계층에 있던 데이터가 전송 계층으로 이동하였습니다!
근데 데이터 말고 무언가 붙어있죠?
이것은 헤더 입니다!
대체 이 헤더는 왜 붙어있는 걸까요?
우리의 컴퓨터는 보통 하나의 프로그램(프로세스)만을 실행하고 있지 않습니다.
음악을 들으면서 게임을 할 수도 있고, 코딩을 할 수도 있습니다.
그러면 우리의 컴퓨터는 데이터를 받아도 이 데이터가 음악의 데이터인지, 게임의 데이터인지, vscode 의 데이터인지 어떻게 알죠?
그것을 알게 해주는 것이 Port
입니다!
Port
: 같은 IP 내에서 프로세스를 구분하기 위해서 가져가는 것
조금 더 쉽게 비유를 해보겠습니다.
우리의 IP, 컴퓨터는 아파트입니다. 그리고 각종 프로그램(프로세스)는 호수입니다. 101호, 102호, 201호 같은 호수요
그리고 우리의 아파트에 박스가 옵니다.
데이터 박스에요!
그리고 이 박스에는 정보가 적혀져있습니다. 101 호 라고요. 그러면 우리의 아파트는 이러한 정보를 보고 101호에 배달을 합니다!
자, 우리의 데이터는 이제 네트워크 계층입니다!
네트워크 계층에서도 헤더가 붙습니다.
그것은 바로 IP 주소 입니다!
우리의 컴퓨터는 컴퓨터마다 각자의 IP 주소가 있습니다. 데이터가 이동을 하는데 어디로 가야할지 모른다면 데이터가 제대로 전송될 수 있을까요?
불가능 할 것 입니다.
우리의 네트워크 계층은 이러한 문제를 해결해주기 위해서 IP 주소를 데이터의 헤더로 붙여서 전송해줍니다. 그러면 데이터는 데이터를 받는 컴퓨터의 IP 주소를 가지고 룰루랄라 이동하게 됩니다!
자, 이제 우리의 데이터는 데이터 링크 계층에 왔습니다! 🙌
데이터링크에서는 이더넷 헤더라는 것과 트레일러가 붙습니다!
트레일러
: 데이터 전송 과정에서 오류 발생 확인 용도
간편하게 생각해봅시다!
우리가 데이터를 어떻게 보내죠? 그냥 보냅니다. 상대 컴퓨터가 어떤일을 하고있든 상관없이 그냥 보내죠!
근데, A 에게 B도 카카오톡을 하고싶고 C도 카카오톡을 하고싶습니다.
A 입장에서는 동일한 프로세스에서 동시에 B의 카톡, C의 카톡 을 받는겁니다
그러면 A의 컴퓨터에서는 이런 데이터들을 어떻게 구분해줄까요?
그렇게 나온 것이 이더넷 헤더 입니다!
이더넷 헤더는 목적지 MAC 주소, 출발지 MAC 주소, 그리고 유형으로 이루어져있습니다.
MAC 주소
: 컴퓨터 고유의 랜카드 주소, 물리주소
MAC 주소는 전세계에 하나뿐인, 절대 변하지 않는 주소라고 생각하면 됩니다.
자, 지금까지 왔다면 2가지 의문이 들 수 있을 것 같습니다. (저는 그랬습니다..^^)
간단히 얘기하겠습니다.
IP
: 변동 가능성이 있는 네트워크 상의 주소
여기서 주의해야할 점은 변동 가능성이 있다는 것 입니다. A -> B 로 데이터가 전송되는데 B의 IP 주소가 중간에 변해버렸습니다.
그러면 이 데이터는 어떻게 될까요? 중간에 가다가 길이 막혀버릴 것 입니다.
그래서 필요한게 MAC 주소입니다. MAC 주소는 고유하니깐요, 변하지 않으니깐요.
자, 그러면 다시 의문이 생길 수 있습니다.
그러면 MAC 주소만 있으면 됐지! 왜 IP 주소도 필요한건데??
MAC 주소는 고유하다고 했죠, 이 주소로 해당 컴퓨터가 어디에있는지 감도 안잡힐 것 입니다. MAC 주소를 하나하나 살펴보면서 데이터를 전송할지 말지 결정하는 것은 불가능에 가까울 것 입니다.
그래서 있는 것이 IP 주소입니다. 어디로 가야할지 방향을 알려준다는 느낌으로 이해하면 쉽습니다.
B 는 101011
이라는 데이터를 보내고 C는 110011
이라는 데이터를 보냅니다.
우리의 A는 101011110011
이라는 데이터를 받습니다. 그렇다면, 우리의 A는 이 데이터가 1010
11110011
인지, 어떤건지 어떻게 알 수 있을 까요?
정답은 이더넷 헤더에 있습니다.
데이터 링크 계층에서 특정 비트열을 붙여서 데이터를 구분할 수 있게 해줍니다.
그렇게 데이터의 충돌을 방지해주는 것 입니다.
첫번째로 이더넷 규칙을 이용한 CSMA/CD
방식입니다.
CSMA/CD
방식은 데이터 보내는 시점을 늦추는 방식으로 데이터의 충돌을 막습
니다.
하지만 이 방식은 비효율적이라며, 스위치가 나왔습니다.
스위치는 데이터를 받을때 이더넷 헤더를 이용해서 구분하고 데이터를 올바르게 전송해주는 역할을 합니다.
우리는 다왔습니다. 이제 마지막 물리 계층입니다!
우리는 물리계층에 도달하기 까지의 과정을 캡슐화
라고 부릅니다.
그리고 물리 계층은 이런 아날로그 신호의 데이터를 전기신호로 바꾸어 전송하게 됩니다.
그러면 데이터를 받는 친구는 이러한 데이터를 어떻게 뜯어볼까요?
간단히 데이터는 각각의 헤더라는 상자에 포장되어있다고 생각해봅시다.
데이터라는 아이템을 얻기 위해서는 각각의 상자를 풀어 헤쳐야할 것 입니다.
이러한 과정을 디캡슐화
라고 합니다.
🙌 우리는 데이터를 얻었습니다!
이렇게 데이터 전송 과정에 대해서 알아보았습니다!
잘못된 정보는 댓글을 통해서 알려주세요!
감사합니다!
[책] 모두의 네트워크, IT 엔지니어를 위한 네트워크 입문
[동영상] 유튜브 테코톡 OSI 7Layer
[블로그]
https://uiyoji-journal.tistory.com/15
https://gdnn.tistory.com/243