250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 다대다
- querydsl
- 이진탐색
- 백트래킹
- FetchType
- 스프링 폼
- 비관적락
- 스토어드 프로시저
- 연결리스트
- shared lock
- 힙
- fetch
- dfs
- 지연로딩
- 데코레이터
- 유니크제약조건
- CHECK OPTION
- JPQL
- PS
- BOJ
- 다대일
- 낙관적락
- 동적sql
- eager
- 일대다
- execute
- exclusive lock
- 연관관계
- SQL프로그래밍
- 즉시로딩
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
OSI 7 Layer 본문
728x90
OSI 7 계층 단계
1 Layer : Physical Layer
두 대의 컴퓨터가 통신하려면?
- 1을 보낼 때는 +5V의 전기를 전선으로 흘려보내고
- 0을 보낼 때는 -5V의 전기를 전선으로 흘려보내면
- 0과 1의 전송이 가능할 것이다.
- 0과 1을 주고 받을 수 있으면 모든 데이터를 주고 받을 수 있으므로
- 두 컴퓨터는 통신이 가능
- 실제 상황에서는 잘 동작하지 않았다.
Physical Layer 란?
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보내고, (encoding)
- 아날로그 신호가 들어오면 0과 1의 나열로 해석하여 (decoding)
- 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 모듈 (module)
여러 대의 컴퓨터가 통신하려면?
예림이가 메시지의 목적지를 확인해서 다른 두대의 컴퓨터들에게 주지 않고 혜림이에게만 전달할 수 있도록 하는 것을 스위치라고 한다.
예림이와 혜림이는 다른 네트워크에 있다.
두 컴퓨터는 전선으로 연결되어 있지 않아서 통신을 할 수 없다.
만약, 스위치와 스위치를 연결할 수 있다면?
이처럼, 스위치와 스위치를 연결해서 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비를 라우터 라고 한다.
라우터는 우리가 잘 알고 있는 공유기에 해당된다.
이런식으로 전 세계의 컴퓨터들을 연결한 것을 인터넷 이라고 한다.
2 Layer : DataLink Layer
앞서 컴퓨터들이 계층구조를 이루며 연결되어 있는 것을 보았다.
이렇게 전 세계의 컴퓨터들이 계층구조로 연결되어 있는 것을 인터넷이라고 한다.
Physical layer에 속하는 기술만으로는 여러대의 컴퓨터가 통신하도록 만들 수 없었다. ㅇ
여러 대의 컴퓨터가 통신하려면?
- 송신자는 데이터의 앞 뒤에 특정한 비트열을 붙여서 보낸다.
- 예를 들어, 송신자(전송자)가 데이터를 보낼 때 앞에는 1111을, 뒤에는 0000을 붙인다고 해보자.
- 00001111을 찾으면 이를 구분자로 하여 데이터를 잘 찾을 수 있을 것이다.
결국 Data-Link Layer란?
- 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
- Framing은 Data-link layer에 속하는 작업들 중 하나이다. Framing은 앞에서 앞뒤로 특정한 비트열을 붙인것을 말한다.
Data-link Layer 기술은 어디에 구현되어 있을까?
- 랜카드
- 2계층 모듈도 1계층 모듈처럼 하드웨어적으로 구현되어 있다.
3 Layer : Network Layer
더 많은 컴퓨터들 사이의 통신
- A는 데이터 앞에 목적지 주소(IP 주소)를 붙여서 가에 전달.
- '가'는 IP주소가 자신과 연결되어 있지 않음을 확인한 후 데이터를 다시 포장하고 '마'에 전달
- 목적지가 B라는 것을 알게된 라우터 '마'는 패킷이 B에 도착하려면 어느 전선으로 패킷을 내보내야 하는지 알아내야한다.
- '마'는 어떻게 데이터를 '바'에게로 전달해야 한다는 것을 알아낼 수 있을까? 이거는 라우팅을 자세하게 공부해보라
- '마'는 데이터를 다시 패킷으로 포장해서, '바'에게 넘겨준다.
- '바'는 '마'가 했던 것과 똑같은 방법으로 '라'에게 패킷을 보낸다.
- '라'는 자신과 연결된 컴퓨터들 중에 IP주소가 55.10.54.75인 컴퓨터가 있다는 것을 알고 있어서, 패킷을 B에게 전달.
결국 Network Layer란?
- 수많은 네트워크들의 연결로 이루어지는 inter-network 속에서
- 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해,
- IP주소를 이용해서 길을 찾고 (routing)
- 자신 다음의 라우터에게 데이터를 넘겨주는 것 (forwarding)
Network Layer 기술은 어디에 구현되어 있을까?
- 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
4 Layer : Transport Layer
- 이제 인터넷 상의 모든 컴퓨터가 서로와 통신할 수 있게 되었다.
- 데이터를 받는 수신자는 전 세계의 컴퓨터로부터 데이터를 받을 것이다.
- 그런데 컴퓨터에는 여러 개의 프로그램들이 실행되고 있었다.
- 어떤 데이터를 무슨 프로세스에게 줘야할 지, 컴퓨터는 어떻게 알 수 있을까?
- 먼저, 데이터를 받고자 하는 프로세스들은 포트 번호 (Port Number) 라는 것을 가져야 한다.
- 포트번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값이다.
- 한편, 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.
- 그러면 데이터 전송자는 9000이라는 포트번호까지 미리 알고 있어야 하는가? ㅇㅇ 맞음
결국 Transport Layer 란?
- Port 번호를 사용하여
- 도착지 컴퓨터의 최종 도착지인 프로세스에 까지
- 데이터가 도달하게 하는 모듈
Transport Layer 기술은 어디에 구현되어 있을까?
- 운영체제의 커널에 소프트웨어 적으로 구현되어 있다.
5,6 Layer : Session Layer, Presentation Layer
OSI 모델 vs TCP/IP 모델
- OSI 네트워킹 모델은 그 구조가 총 7개의 Layer 로 나뉘어져 있는데요.
- 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있다.
- TCP/IP 모델도 OSI 모델과 마찬가지로 네트워크 시스템에 대한 모델이다.
- 현대의 인터넷이 TCP/IP 모델을 따르는 이유는 OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문이다.
- 오늘날 TCP/IP Updated Model 이 더 많이 사용되고 있다.
7 Layer : Application Layer
TCP/IP 소켓 프로그래밍
- 운영체제의 Transport Layer에서 제공하는 API를 활용해서
- 통신 가능한 프로그램을 만드는 것을
- TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍 이라고 한다.
- 소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작 시킬 수 있다.
- 뿐만 아니라, TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있다.
- = 누구든 자신만의 Application Layer 프로토콜을 만들어서 사용할 수 있다.
- Application Layer도 다른 layer 들과 마찬가지로 인코더, 디코더가 있을텐데
- 대표적인 Application Layer 프로토콜인 HTTP로 인코딩 & 디코딩을 살펴보자
마치며
- 익숙한 MVC 패턴
- MVC 패턴은 소프트웨어 아키텍처 중 하나인데요
- MVC와 마찬가지로, 소프트웨어 아키텍처 중에 Layered Architecture 라는게 있다.
- Layered 아키텍처를 따르는 대표적인 예가 네트워크 시스템이다.
- 그러니까, 네트워크 시스템은 하나의 커다란 소프트웨어라고 할 수 있다.
- OSI 7 Layer 모델은 거대한 네트워크 소프트웨어의 구조를 설명하는 것이다.
'Network' 카테고리의 다른 글
사설IP & NAT & CIDR (0) | 2023.08.28 |
---|---|
DHCP (0) | 2023.03.28 |
VPC, public/private subnet (0) | 2023.03.28 |
서브넷 마스크, subnet mask (0) | 2023.03.28 |
TCP & UDP (0) | 2023.03.22 |