
1계층 - Physical Layer
물리적으로 연결된 두 대의 컴퓨터과 0과 1의 나열을 주고받을 수 있게 해주는 모듈
- Encoding
- Digital data → Analog signal
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보내고
- Decoding
- Analog signal → Digital data
- 아날로그 신호가 들어오면 0과 1의 나열로 해석한다
- PHY 칩
- PHY - physical layer의 약자, 직접회로로 구현된 전자회로임

2계층 - Data Link Layer

여러대의 컴퓨터가 통신하기 위해서는 1계층의 기술 만으로는 부족

Framing 비트열의 시작과 끝에 약속한 비트열을 추가!
→ 구분해서 받을 수 있다!
Data-link Layer 란?
같은 네트워크
에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
- Framing은 Data-link Layer의 작업 중 하나
- 랜카드

3계층 - Network Layer
- 수많은 네트워크들의 연결로 이루어지는 inter-network 속에서
- 어딘가에 목적지 컴퓨터로 데이터를 전송하기 위해
- IP 주소를 이용해서 길을 찾고 (rowting)
- 자신 다음의 라우터에게 데이터를 넘겨주는 것 (fowarding)
- OS의 커널에 소프트웨어적으로 구현되어 있음

데이터를 IP 패킷으로 포장한다!!
IP 패킷 - IP 주소, ....
A가 B의 IP 주소를 어떻게 알까요? - DNS (Domain Name System)
A
가 패킷을 가장 가까운 라우터 (스위치)인가
에게 전달
→
가
: 패킷을 까서 IP주소를 확인 “
가
와 연결된 컴퓨터 중에는 xx.xx.xx.xx가 없다”가
:마
에게 전달
→
마
: 패킷을 까서 IP 주소를 확인 “어디로 보내야 하지?
가
or 나
or 바
” - 라우팅 알고리즘!마
:바
에게 전달
→ 바 : 패킷을 까서 IP 주소를 확인
“ 어디로 보내야 하지?
마
or 다
or 라
” - 라우팅 알고리즘!바
:라
에게 전달
→ 라 : 패킷을 까서 IP 주소를 확인
“내 PC 중 한 녀석이 목적지이구나”
라
:B
에게 전달

4계층 - Transport Layer
어떤 데이터를 무슨 프로세스에게 줘야할 지 컴퓨터는 어떻게 알 수 있을까요?
Port Number
하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값
- End Point간 신뢰성 있는 데이터 전송을 담당하는 계층
- Port 번호를 사용하여
- 도착지 컴퓨터의 최종 도착지인 프로세스에 까지
- 데이터가 도달하게 하는 모듈
- 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
5계층 - Application Layer
OSI 모델 vs TCP/IP 모델

TCP/IP 소켓 프로그래밍
- 운영체제의 Transport layer에서 제공하는 API를 활용해서 통신가능한 프로그램을 만드는것