HANA -J
TIL - OSI 7 계층, TCP/IP 4 계층 본문
- 현대의 인터넷은 OSI 7모델이 아니라 TCP/IP모델을 따르고 있다.
- TCP/IP 모델도 OSI와 마찬가지로 네트워크 시스템에 대한 모델이다
Q.1 두대의 컴퓨터가 통신하려면?
- 모든 파일과 프로그램은 0과 1의 나열이다. => 결국 0과 1만 있으면 데이터를 주고 받을 수 있다.
- 디지털 신호를 아날로그 신호로 변조를 해서 사용해야 한다.
1. Physical Layer
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보내고(encoding), 아날로그 신호가 들어오면 0과 1의 나열로 해석한다(decoding).
- 물리적으로 연결된 2대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 모듈
- encoding : 변조, encoder : 변조를 해주는 것, decoding : 해석
- 실제로 1계층은 하드웨어적으로 구현되어 있다.
Q2. 여러대의 컴퓨터가 통신하려면?
- 통신하려 하는 컴퓨터 수많큼 전선을 연결한다..? => 사실상 거의 불가능 돈도 많이 들고 한계가 있다!
옆의 그림과 같이 물리적으로 연결된 박스에 여러대의 컴퓨터를 연결해서 사용한다면 한대의 컴퓨터는 전선 한개만 연결하면 된다.
=> 그 기능을 하는 것을 스위치라고 한다.
Q3. 아래의 그림에서 A와 B가 통신을 해야한다면?
=> 위의 그림은 물리적으로 연결 되어 있지 않기 때문에 A와 B는 통신할 수 없다 !
=> 하지만 스위치끼리 연결이 가능하다면??
=> 서로다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비를 라우터라고 한다.
- 위의 방식으로 전세계의 컴퓨터들이 계층구조로 연결되어 있는 것을 인터넷이라고 한다.
2. Data Link Layer
- 같은 네트워크에 있는 여러대의 컴퓨터들이 데이터를 주고 받기 위해 필요한 모듈
- Framing은 data-link layer에 속하는 작업들 중 하나이다
- 2계층 또한 하드웨어적으로 구현
- Framing? 8bit씩 아래의 그림처럼 데이터를 구분해주는 숫자열을 붙이는것 (아래그림대로는 아님 !)
3. Network Layer
- A컴퓨터는 Z컴퓨터의 IP주소를 알고 있어야 통신을 할 수 있다. (IP주소는 컴퓨터마다 고유한 값을 가진다.)
- 그렇다면 어떻게 IP 주소를 알 수 있을까? => 실제로 우리는 www.naver.com 이라는 도메인이름을 주소창에 입력해서 사용한다. 이렇게 사용하는 거 자체가 IP주소를 알고 있는 것과 같다.(자세한건 DNS에대해 공부 할것)
- 수많은 네트워크 연결로 이루어지는 인터넷에서, 목적지 컴퓨터와 통신을 하기위해
IP 주소를 이용해 길을 찾고(routing), 자신의 다음 라우터(위의 계층)에게 데이터를 넘겨주는것(forwarding)을 Network Layer에서 일어 난다.
- 3계층은 운영체제의 커널에 소프트웨어 적으로 구현되어 있다.
4. Transport Layer
Q4. 컴퓨터는 세개의 데이터를 어떤 프로세스에게 줘야할까?
- 먼저 데이터를 받고자 하는 프로세스들은 포트번호를 가져야 한다.(포트번호? 하나의 컴퓨터에서 동신에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수값)
- 송신자는 데이터를 보낼 때 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트번호를 붙여서 보내야한다.
ex) 우리는 www.naver.com을 입력하면 사실 뒤에 :80이 생략된것(port번호도 알고 있는셈)
- Transport Layer는 포트번호를 사용하여 도착지 컴퓨터의 최종도착지인 프로세스까지 데이터가 도달 되도록 하는 모듈
- 운영체제의 커널에 구현되어 있다.
5. Application Layer
- TCP/IP 소켓 프로그래밍 : 운영체제의 Transport Layer에서 제공하는 API를 사용해서 통신가능한 프로그램을 만드는 것
- HTTP : 대표적인 Application layer프로토콜
정리
네트워크 시스템은 Layered 아키텍처를 따른다.
네트워크 시스템은 하나의 커다란 소프트웨어이다
OSI, TCP/IP 모델들은 네트워크 소프트웨어 구조를 설명하는 것이다.
위의 정리글 출처 : https://www.youtube.com/watch?v=1pfTxp25MA8 명강의 입니다...!! 꼭 보세요
'what I Learnd > TIL' 카테고리의 다른 글
TIL - node.js 미들웨어 (0) | 2022.02.18 |
---|---|
TIL - node.js require, import (0) | 2022.02.16 |
TIL - Nest.js (0) | 2022.02.08 |
TIL- AWS EC2 (0) | 2022.01.20 |
오류 -Instance is not in the expected state behind the load balancer. It was expected to be registered but current state is draining with reason Target.DeregistrationInProgress. (0) | 2022.01.07 |