네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것

https://shlee0882.tistory.com/110 출처
왜 나눌까?
- 통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문(모듈화)
1~4계층은 데이터 전송(전달)하는 기능, 5~7계층은 프로세스 간의 통신 프로토콜
| 계층 | 장치/프로토콜/도구 | 구현 위치 | 기능 | 식별자 | 데이터단위 |
|---|---|---|---|---|---|
| 1 물(hw) | 리피터, 케이블, 허브 | encoding, decoding | |||
| 2 데(hw) | 스위치 | LAN카드 | 같은 네트워크에서 데이터 패킷의 경로 찾아줌(switching) | MAC주소 | 프레임 |
| 3 네 | 라우터 | OS커널 | 다른 네트워크에서 데이터 패킷의 경로 찾아줌(routing) | IP주소 | Packet |
| 4 전 | TCP, UDP | OS커널 | 프로세스까지 데이터가 도달할 수 있도록 전송함 | 포트번호 | Segment |
| 5 세 | API, socket | OS user모드 | 응용 프로그램 간 통신을 위해 세션을 관리 | ||
| 6 표 | OS user모드 | • 데이터 포맷팅 | |||
| • 암호화 및 복호화 | |||||
| 7 응 | HTTP | OS user모드 | 응용프로그램을 통해 사용자가 확인 |
1계층: 물리 - HW적으로 구현- 리피터, 케이블, 허브
- 데이터를 전기적인 신호로 변환해서 주고받는 기능을 진행(데이터전송)
- 컴퓨터가 통신하려면?
- 모든파일, 프로그램은 0과 1의 나열→1은 +5v, 0은 -5v를 주고받음
- but 전선은 모든 주파수를 다 통과시키지 못함
ex) 5~8Hz만 통과시킬수 있는 전선에, 주파수 최소값 1, 최대길이 10인 전자기파는 5~8hz부분만 통과해서 엉뚱한 데이터만 도착하기도 함
0과 1을 주고받을 수 있으면 되는데, but 수직선과 수평선이 있는 전자기파는 항상 0~무한대의 범위를 가짐
→ 이런 전기신호를 통과시킬 수 있는 전선은 없음
⇒ 아날로그 신호로 바꿔서 전송해야함
⇒ 물리계층: 0,1을 아날로그 신호로 바꾸는(encoding)과 아날로그 신호를 0과 1로 바꿔서(decoding) 물리적으로 연결된 2대의 컴퓨터가 0과 1을 주고받을 수 있게 해주는 모듈(함수)
2계층: 데이터링크 - 브릿지, 스위치 등
- MAC주소를 통해 통신함. 프레임에 Mac주소를 부여하고, 에러검출, 재전송, 흐름제어를 진행한다.
→ 여러대의 컴퓨터가 통신하려고 모든 컴퓨터에 전선을 연결하면 비용면에 비효율
⇒ 하나의 선에 여러개의 컴퓨터가 연결되어있으면 효율적으로 통신할 수 있음
이 하나의 선을 상자(더미허브)안에 넣어보자.
→만약 하나의 선에 있는 A가 B에게 데이터를 보내고 싶음⇒B에게만 보내라고 목적지를 정하도록 더미허브를 똑똑하게 만든것=스위치
역할 : 경로를 찾는 것뿐만 아니라, 데이터를 마구잡이로 보내지 않고 안전하게 보내는 역할도 수행한다.
1. 프레이밍: 프레임 단위의 데이터 유닛으로 만들어서 처리
2. 흐름제어: 너무 많거나 너무 적은 데이터를 송수신하지 않도록 흐름제어
3. 오류제어: 프레임 전송 시 발생한 오류를 복원하거나 재전송
4. 접근제어: 매체 상 통신 주체(장치)가 여러 개 존재할 때, 데이터 전송 여부 결정
5. 주소지정(switching): MAC주소를 할당받아 올바른 목적지로 전달되게 함
- 데이터 단위: 프레임: 패킷을 캡슐화 한것
⇒2계층: 같은 네트워크에 있는 여러대의 컴퓨터들이 데이터를 주고받기 위해 필요한 모듈 (프레이밍은 그 작업 중 하나), LAN카드에 구현되어있음(HW)
3계층: 네트워크 - 라우터 등
이동할 경로를 선택해서 IP주소를 지정하고, 이 경로로 패킷을 전달해준다
데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능
→ 서로 다른 네트워크에 속한 컴퓨터끼리 통신할 수 있게하는 장비=라우터(like 공유기)
⇒이렇게 전세계의 컴퓨터를 연결한것=인터넷
*IP주소: A가 다른 사람말고 B에게만 데이터를 보내고 싶어서 데이터를 보낼때 데이터+B의 주소(패킷)를 같이 보냄, 이때 주소=IP주소 ex)네이버 주소=ip주소로 변환
⇒ 네트워크계층: 수많은 네트워크의 연결로 이뤄지는 internetwork에서 목적지로 데이터를 전달하기 위해 IP주소를 이용해서 길을 찾고(routing) 자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding), OS의 커널에 구현되어있음
4계층: 전송 - TCP, UDP
- 포트를 열어두고, 보내고자 하는 데이터의 전송속도, 용량, 목적지(프로세스)를 처리
- TCP: 신뢰성, 연결지향적
- UDP: 비신뢰성, 비연결성, 실시간
- 전송계층의 주요기능
- 세그먼트 분할 및 재조립: 세션계층에서 받은 데이터를 세그먼트로 분할하고, 세그먼트를 원래의 데이터로 완전히 복원함
- 연결제어: 두 장치 간 연결지향/비연결지향통신을 설정(TCP/UDP)
- 신뢰성있는 데이터 전송: 오류 검출 및 정정, 흐름 제어, 혼잡 제어 등 신뢰성있는 데이터를 전송할 수 있도록 함
⇒전송계층: 각 프로세스 별로 포트번호를 사용하여 수신 컴퓨터의 어떤 프로세스에 데이터를 보낼지 구분해서 데이터를 전송하는 모듈, os커널에 구현
*포트번호: 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 프로세스가 가져야하는 정수값 ex)https://www.naver.com/**80**
5계층: 세션
6계층: 표현계층: 데이터가 text인지, 그림인지, gif인지 등
7계층: 응용(어플리케이션) 계층
- 사용자와 상호작용하고, 네트워크 리소스에 엑세스함
- 응용프로그램(크롬, 사파리)을 통해 사용자가 확인하는 과정
- 대표적인 어플리케이션계층 프로토콜=http
⇒오늘날 TCP/IP모델을 사용하고 이 모델을 3개의 계층을 묶어 어플리케이션 계층으로 본다
= 네트워크 시스템은 하나의 거대한 sw라고 할 수 있음, 이 거대한 구조를 설명하는 것
데이터 캡슐화
: 데이터를 전달할 때 상위계층(7층)→하위계층(1층)으로 전달되는데, 각 계층에서는 다른 계층과 통신할 때, 데이터에 header와 footer를 추가한 후 다른 계층으로 전달