일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Chrome Extension
- 디지몬상테스트
- 프론트 개발자
- 로또 몰래카메라
- Google Image Crawler
- 프로젝트
- chrome extension typescript boiler plate
- 2024년회고
- React
- 토이프로젝트
- react mociking
- Google Image Crawler Chrome Extension
- 네이버 로또
- 나락퀴즈
- extension
- 개발자
- 로또 몰카
- three.js
- 프론트엔드
- 구글 이미지 다운
- 리액트네이티브
- 똥피하기
- 2024년 개발자회고
- react-three-fiber
- 리액트
- ReactNative
- cloudfront
- react-mocking
- 사이드 프로젝트
- 어플
- Today
- Total
개발 블로그
OSI 7계층, TCP/IP 계층, TCP/IP Updated 계층 본문
https://youtu.be/1pfTxp25MA8 영상을 보고 정리한 포스팅입니다.
OSI 7계층 : OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7 계층이라고 한다. (위키백과)
1계층 Physical Layer
두대의 컴퓨터가 통신하려면?
- 모든파일과 프로그램은 0과1이다
- 결국 0과 1만 주고받으면됨
전선하나로 연결한다 쳤을때 +5V를 흘려줄때 1, -5V를 흘려줄때는 0으로하면 전송이 가능해짐
=> 모든데이터를 주고받을수잇음!
수직선과 수평선이 있는 전자기파는 항상 0~무한대[Hz]의 주파수 범위를 가짐.
=> 따라서 이런 전기신호를 통과시킬수 잇는 전선은 없음
=> 그렇다면 어떻게 전송해야할까?
아날로그신호로 바꿔서 전송해야함
010101 보내려면 아날로그신호로 바꿔서 보내고 해석해서 010101을 이해함
=> 데이터주고받기 성공
그래서 Physical Layer란?
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보내고(encoding)
- 아날로그 신호가 들어오면 0과 1의 나열로 해석하여(decoding)
- 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈(module)(모듈이란 프로그래밍에서 함수라 생각하면됨)
Signal encode(data){
...
}
Data decode(signal){
...
}
physical layer 기술이 구현되어 있는곳
-PHY칩
-1계층 모듈은 하드웨어적으로 구현되어 있음 (회로로구성되어있음)
2계층 Data-Link Layer
-사전지식
여러대의 컴퓨터가 통신하려면?
일일이 전선으로 연결?
이런방식은 전선 꽂을 구멍도 많이 필요하게 되고 전선도 많이 필요하게됨
통신하려는 컴퓨터가 많아지면 많아질수록 비용면에서 비효율적
따라서 전선하나를 가지고 여러 대의 컴퓨터와 통신할 방법을 모색해야함
만약 예림이가 혜림이한테 데이터를 전송하려할 때
구리선하나를 놓고 모든컴퓨터를 연결
모든 컴퓨터가 받긴했지만
전달성공
연결되어있는 구리선을 접어서 상자로넣음 ( 더미허브)
하지만 데이터를 보내려고할때 다른 컴퓨터에도 그데이터를 받을수밖에없음
이때 상자가 메시지의 목적지를 확인해서 그사람한테만 줄수있다면?
이러한 기능을 넣은 상자를 스위치 라고함
스위치는 일종의 컴퓨터로 이런일을 수행함
서로다른 네트워크가 두개 구축되어잇을때
서로다른 네트워크를 가진 두개의 컴퓨터가 통신하려면?
전선으로 스위치와 스위치를 연결함
스위치와 스위치를 연결해서 서로다른 네트워크에 속한 컴퓨터까지 통신이 가능하게 해주는 장비를 라우터라고 한다.
중간 박스는 스위치와 라우터역할을 둘다 함. 근데 라우터라고 생각하자
이 라우터(박스)는 공유기임
라우터와 라우터를 라우터로 연결
이런식으로 전세계의 컴퓨터를 연결한 것을 인터넷이라고함
대한민국 네트워크 일본네트워크 사이를 잇는 전선은 규모가크겟지?
실제로 해상밑에 엄청큰 전선이잇음. 해저 케이블
Data- Link Layer
인터넷: 전세계의 컴퓨터들이 계층구조로 연결되어있는것
물리계층의 기술로 두개의컴퓨터가 어떻게통신하는지알수있음.
여러개는 못함
끊어읽기
이를위해 송신자는 데이터의 앞 뒤에 특정한 비트열을 붙입니다
예를들어 송신자(전송자)가 데이터를 보낼때
앞에는 1111, 뒤에는 0000을 붙인다고 하면
01010101 => 1111 010101 0000
이런식으로 끊어서 받을수잇음
그래서 Data-Link Layer란?
-같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
- Framing 은 Data-link Layer에 속하는 작업들 중 하나이다
(특정한 비트열을 붙여서 원본데이터를 감싼것을 Framing이라함)
-구현되어있는곳
-랜카드
하드웨어적으로 구현되어잇음
3계층 Network Layer
-A는 데이터앞에 목적지 주소, 즉 B의 주소를 붙입니다
IP주소: 각 컴퓨터들이 갖는 고유한 주소
우리가 B의 ip주소를 어떻게 알까?
네이버에 있는 컴퓨터로 보낸다 치면 www.naver.com => ip주소로 변환되어 사용됨
(DNS를 통해)
도메인주소를 안다 => IP주소를 안다
상대방의 IP주소를 알아야 전송할수있음
`상대방IP주소 data` =>패킷
패킷의 여행
1. A가 라우터 가에게 패킷을 전달
2. 가에서 패킷을 염. ( 나랑 연결된 컴퓨터중에는 목적지IP주소에 해당하는 컴퓨터가 없네)
3. 가는 다시 패킷을 포장해서 마로 줌
4. 마는 패킷을 까서 목적지 주소를 읽음 ( 이 때 어디로 보내야할지 판단 (방법에대해서는 라우터에대해 자세히 공부해보면 알 수 있을것이라함)
5. 바도 똑같은 방식으로 라로 패킷을 보냄
6. 라는 B에게 패킷을 줌
그래서 Network Layer란?
- 수많은 네트워크들의 연결로 이루어지는 inter-network 속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해,
IP주소를 이용해서 길을 찾고 (routing)
자신 다음의 라우터에게 데이터를 넘겨주는것(forwarding)
- 어디에 구현되어있을까
- 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
이제 인터넷 상의 모든 컴퓨터가 서로 통신할 수 있게 되었음
데이터를 받는 수신자는 전세계의 컴퓨터로 부터 데이터를 받을 수 있게됨
4계층 Transport Layer
- 전세계로부터 받은 데이터를 실행중인 프로그램(프로세스)에게 나누어주려고함
- 이 때 어떤 프로세스에 어떤데이터를줘야하는지 어떻게알수있을까?
- 데이터를 받고자 하는 프로세스들은 포트번호를 가져야함
-포트번호: 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값.
- 한편, 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트번호를 붙여서 보낸다.
---검색창에 www.naver.com을 입력하는 것은
뒤에 :80이 생략된 것이다.
그래서 Transport Layer란?
- Port 번호를 사용하여
- 도착지 컴퓨터의 최종 도착지인 프로세스에 까지
- 데이터가 도달하게 하는 모듈
- 어디에 구현되어있을까?
-운영체제의 커널에 소프트웨어적으로 구현되어 있다
----
Session Layer
---
Presentation Layer
---
Application Layer
앞에 두계층 건너뜀 .. 왜?
- 사실 현대의 모델은 OSI 모델을 따르는게 아니라
TCP/IP 모델을 따르고 있음
TCP/IP모델은 OSI모델과 마찬가지로 네트워크 시스템에 대한 모델
그 이유는
OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문이다.
TCP/IP Updated모델을 더많이 씀 지금은
TCP/IP 소켓 프로그래밍
- 운영체제의 Transport Layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을
TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍이라고 한다
- 소켓 프로그래밍만으로도 클라이언트, 서버 프로그램을따로따로 만들어서 동작 시킬 수 있음
- TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있음
-누구든 자신만의 Application Layer 프로토콜을 만들어서 사용할 수 있다는 뜻임
-Application Layer 도 다른 Layer들과 마찬가지로 인코도,디코더가 있음.
- 대표적인 Application Layer 프로토콜인 HTTP로 인코딩 & 디코딩을 보자
소프트웨어 아키텍쳐중 Layered Architecture 가 있는데
이 아키텍쳐를 따르는 대표적인 예가 네트워크 시스템이다.
=> 따라서 네트워크 시스템은 하나의 커다란 소프트웨어라고 할 수 있다.
'웹' 카테고리의 다른 글
동기, 비동기, 블로킹, 논블로킹 가장 명확하고 쉽게 정리해보자 (2) | 2023.11.28 |
---|---|
git 프로젝트 세팅 방법 및 실무에서 사용하는 명령어 정리, vscode 확장프로그램 추천 (2) | 2023.11.26 |
로그인 - 세션 vs JWT (2) | 2023.02.21 |
HTTP 메시지 ( 미완) (0) | 2022.08.25 |
URL과 리소스 (0) | 2022.08.18 |