[CS] 네트워크 - OSI 7계층 (1 ~ 3계층)
CS공부를 조금씩 해보려고 합니다.
첫번째 주제로는 네트워크!
늘 일상속에 인터넷이라는게 잘 녹아있어 어떻게 동작하는지 궁금해져 한번 파보려고 합니다.
OSI
OSI(Open System Interconnection) 네트워크 통신이 일어나는 과정을 7 계층으로 나눈 것.
7 Layer
- Physical - 물리 계층
- Data Link - 데이터링크 계층
- Network - 네트워크 계층
- Transport - 전송 계층
- Session - 세션 계층
- Presentation - 표현 계층
- Application - 응용 계층
계층을 나눈 이유 ?
네트워크 통신이 일어날때의 과정을 단계별로 파악할 수 있기 때문입니다.
7단계중 문제가 생긴곳 중 해당 부분만 고치면 해결할 수 있겠죠.
핸드폰 충전기를 예로 들어볼게요.
아래 사진처럼 일체형과 분리형이 있는데,
만약 충전이 안될때
일체형의 경우 어디가 고장난지 몰라 아예 새걸로 사야하는 번거로움이 있지만,
분리형의 경우 본체가 문제인지 케이블이 문제인지 확인 할 수 있고, 문제 되는 부분만 교체 하면 되겠죠.
이처럼 네트워크도 계층을 나누어 문제 되는 부분만 손 볼 수 있게 나누어 놓은 겁니다.
들어가기전에..
데이터의 기술적인 개념
인터넷 기사들, SNS의 피드 등 우리는 이런것들을 통 틀어서 데이터 라고 표현 하죠.
사실 이런 데이터들은 엄청난 양의 0과 1로 이루어져 있습니다.
그럼 이 숫자로 되어 있는 데이터들을 어떻게 다른 컴퓨터로 전달 할까요?
데이터 전달 방법
컴퓨터는 이진법의 숫자를 전기신호로 표현 할 수 있습니다.
전.기.신.호 로요.
그럼 전기신호를 전달해줄 케이블이 필요하겠네요.
전기신호를 어떻게 전세계로 다 보내주지?
국내에서 전기신호 보내는건 알겠는데, 한국에서 해외로는 어떻게 전기신호를 보낼까요.
답은 바다 아래에 있습니다.
아래 사진 처럼 해저케이블로 전세계가 연결되어있어 전기신호로 소통이 가능해요!
![]() |
![]() |
0과 1의 데이터를 '전기신호로 주고 받는다' 까지 왔습니다.
자세한 내용은 아래 물리계층에서 덧붙여 설명할게요.
1. Physical Layer - 물리계층
• 0과 1로 된 데이터를 전기신호로 변환해서 주고받는 기능을 하는 계층
• 데이터를 전송하는 역할만 진행합니다. (에러검사, 어떤 데이터인지 신경x)
• 통신 단위: Bit
• 장비: 통신 케이블, 허브 등
0과 1로 된 데이터를 전기신호로 변환 해주는 하드웨어가 있어요.
컴퓨터 본체를 열어보셨거나, LAN 케이블을 한번이라도 연결 해보신분 이라면 한번쯤 보셨을 겁니다.
물리 계층 흐름
PC1
- 0과 1로 된 데이터를 랜 카드로 전송
- 랜 카드에서 0과 1로 된 (비트열) 데이터를 전기 신호로 변환 (encoding)
- PC2로 전기신호 전송
PC2
- 랜 카드에서 전기신호를 0과 1로 복원 (decoding)
- 데이터 수신 완료
2. DataLink Layer- 데이터링크 계층
• 기기들 사이의 데이터를 전송하는 역할.
• MAC 주소로 통신
• 통신 단위: Frame
• 프로토콜: 이더넷, MAC, LAN, Wifi
• 장비: 스위치, 브릿지
물리계층에서는 오류가 나든 말든 상관없이 데이터 전송만 한다고 했는데요.
오류 감지는 데이터링크 계층에서 하며, 오류가 감지 되면 재전송하는 역할도 합니다.
MAC
MAC이 뭔데, 맥북이야?
MAC: 컴퓨터 간 데이터를 전송하기 위한 컴퓨터의 물리적 주소
그럼 IP는?
MAC 과 IP의 차이점은 아래와 같습니다.
IP
- 랜 카드에 연결되어 있는 회선(랜선)의 주소 (논리적 주소)
- 인터넷망에 접속할 때마다 주소가 바뀜
MAC
- 랜 카드의 주소 (물리적 주소)
- 랜 카드의 고유한 주소이기 때문에 주소값이 바뀌지 않음
ex) 사람으로 비유를 해볼게요.
컴퓨터 | 사람 |
MAC (00-13-XX-10-AB-22) |
주민등록번호 (00XXXX-XXXXXXX) |
IP (1.22.11.33) |
이름 (김이박) |
DNS (www.naver.com) |
별명 (Peppo) |
Framing
여러대의 컴퓨터가 내 컴퓨터에 데이터를 동시에 보낸다고 했을때, 어떤 컴퓨터에서 보낸건지 어떻게 알까요?
이를 구분하기위해 데이터링크 계층에선 구분자 처리를 해줘요.
3대의 컴퓨터에서 1010이라는 데이터를 보낸다고 가정했을때,
각 컴퓨터의 데이터계층에서 맨 앞과 맨뒤에 숫자를 붙입니다.
이 과정을 Framing이라고 해요.
통신단위가 Frame 이라고 했던 이유입니다.
데이터링크 계층 흐름
PC1
- 원본 데이터 `100000`
- 송신자의 데이터 구분을 위해 원본데이터 양 끝에 구분자를 추가 (T2, H2 참고)
>> `1010으로 시작하고 0111로 끝나면 PC1이 보낸거고 그 안에 있는게 원본데이터야 ~` - 물리계층으로 데이터 전달
- 전기신호 로 전송
PC2
- 전기신호 0과 1로 복원 (decoding)
- 10101000000111 복원완료
- 데이터링크 계층으로 데이터 전달
- 시작(1010) 끝(0111) 제거
3. Network Layer- 네트워크 계층
• 목적지 네트워크 주소(IP)를 정하고, 최적의 경로를 선택 후(Routing) 패킷을 전달해 주는 역할.
• IP 주소로 통신
• 통신 단위: 패킷(Packet)
• 프로토콜: IP
• 장비: 라우터
네트워크 계층 흐름
해외에 있는 A라는 친구한테 메일을 보낸다고 가정해 봅시다.
A의 IP 주소는 1.32.xx.xx 라고 할게요.
- '안녕'이라는 메시지를 보내려고 할때, A의 IP주소를 data 앞에 붙인 후(IP 헤더) 스위치로 보냅니다.
- 스위치에선 자신이 가진 주소중에 1.32.xx.xx 를 찾습니다.
- 없네요
- 라우터로 보냅니다.
- 최적의 경로를 찾아 (routing) 해당 라우터로 보낸후 스위치로 전달.
- 스위치에서 1.32.xx.xx 주소를 가진 IP로 데이터 전달.
2계층 부분에서는 데이터링크 계층에서 언급한것과 같이 구분자 (ex. 시작: 1111, 끝: 0001) 가 추가됩니다.
1계층 부분에서는 0과1로 된 data를 전기신호로 변환하죠.
TODO: 라우팅 테이블 내용 추가하기
작성하다보니 모르는 키워드도 많고 공부할것도 많네요..
이어서 4~7계층에 대해 정리해 보겠습니다 :)
참고
- 수.제.비 정보처리기사 필기
- https://ko.wikipedia.org/wiki/OSI_%EB%AA%A8%ED%98%95
- https://jhnyang.tistory.com/194
- https://github.com/ssafy-tech-concert/ssafy-tech-concert/blob/master/Computer-Science/OSI%207%20layer.md
- https://www.youtube.com/watch?v=1pfTxp25MA8&t=1817s