OSI 7계층에 대해 알아봅시다.
OSI 7계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다.
이렇게 계층을 나누면 통신이 일어나는 과정을 단계별로 파악하기 쉽기 때문입니다.
그래서 7단계 중 특정한 단계에 이상이 있다면 다른 단계의 장비나 소프트웨어를 건드리지 않고 이상이 생긴 단계의 문제를 해결할 수 있습니다!
그 중 최상위 계층인 어플리케이션 계층부터 알아보겠습니다.
😜 추가 지식
endSystem : 종단 시스템. 흔히 호스트라고 합니다. ex)PC,프린터,핸드폰 등등등
애플리케이션 구조는 애플리케이션 개발자에 의해 설계되고 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지를 지시합니다.
크게 두가지로 분류되는데
로 나뉩니다.
😜 추가 지식
이 때 클라이언트-서버 구조에서 클라이언트는 서로 직접적으로 통신하지 않으며, 서버는 고정 IP 주소를 갖는 것이 특징이다.
😜 추가 지식
- 그런데, 하나의 서버에서 너무 많은 클라이언트 요청에 응답하는 게 부담스럽거나 불가능할 때가 있습니다. 이런 경우를 대비하여 많은 수의 호스트를 갖춘 데이터 센터가 가상의 서버를 생성하여 응답 처리를 하는 것을 도와줍니다. 데이터 센터를 사용하는 예로는 [구글, 아마존, 지메일, 페이스북] 등이 있습니다.
P2P 구조에서는 항상 켜져 있는 기반구조 서버에 최소로 의존하거나 전혀 의존하지 않습니다. 대신 애플리케이션은 피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하도록 합니다. 피어는 사용자들이 제어하는 데스크톱과 랩톱입니다. P2P 구조에 기반을 둔 애플리케이션 예로는 [쉰레이(다운로드 가속기), 비트토렌트, 스카이프] 등이 있습니다.
P2P구조는 자가 확장성
이라는 특성을 가지고 있습니다. 예를 들어, P2P 파일 공유 애플리케이션에서 각 피어들이 파일을 요구함으로써 작업 부하를 만들어 내지만, 각 피어들은 파일을 다른 피어들에게 분배함으로써 시스템에 서비스 능력을 추가합니다.
또한, P2P구조는 비용이 효율적이라는 특성을 가지고 있습니다. 데이터 센터의 클라이언트-서버 설계와는 대조적으로 P2P 구조는 서버 기반구조와 서버 대역폭을 요구하지 않기 때문에 비용이 효율적입니다.
😜 추가 지식
P2P 구조는 고도의 분산 구조 특성으로 인해 보안, 성능, 신뢰성이 좋지 않은 평가를 받고 있기도 합니다.
구조 | 특징 |
---|---|
클라이언트 - 서버 | - 클라이언트는 서로 직접적으로 통신하지 않는다. - 서버는 고정 IP 주소라는 잘 알려진 주소를 갖는다. - 서버는 항상 동작하므로 클라이언트는 서버 주소로 패킷을 보내서 항상 서버에 연결할 수 있다. - 서버가 부족할 경우 많은 수의 호스트를 갖춘 데이터 센터(data center)를 운영한다. - 구글, 빙, 아마존 등 - 웹, 파일 전송, 원격 로그인, 전자메일 등이 있다. |
P2P | - 항상 켜져 있는 서버에 최소로 의존하거나 아예 의존하지 않는다. - 애플리케이션은 피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하도록 한다. - 클라이언트-서버와 P2P 요소들을 결합한 하이브리드 구조를 가질 수도 있다. - 자가 확장성(self-scalability)을 가지고 있어, 부하의 분배가 가능하다. - 토렌트, 스카이프 등이 있다. |
대부분의 애플리케이션은 두 프로세스가 메시지를 서로에게 보내는 통신 프로세스 쌍으로 구성됩니다. 하나의 프로세스로부터 다른 프로세스로 보내는 메시지는 네트워크를 통해 움직입니다. 프로세스는 소켓(socket)을 통해 네트워크로 메시지를 보내고 받습니다.
위 이미지는 인터넷에서 통신하는 두 프로세스 사이의 소켓 통신을 보여줍니다.
프로세스가 사용하는 하위 전송 프로토콜이 인터넷의 TCP 프로토콜이라고 가정합시다.
소켓
은 호스트의 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스입니다.
또한 소켓
은 네트워크 애플리케이션이 인터넷에 만든 프로그래밍 인터페이스이므로, 애플리케이션과 네트워크 사이의 API(Application Programming Interface)라고도 합니다.
애플리케이션 개발자는 소켓의 애플리케이션 계층에 대한 모든 통제권을 갖지만 소켓의 트랜스포트 계층에 대한 통제권은 거의 갖지 못합니다.
트랜스포트 계층에 대한 애플리케이션 개발자의 통제는 아래와 같습니다.
애플리케이션 개발자가 트랜스포트 프로토콜을 선택하면, 애플리케이션은 프로토콜이 제공하는 전송 서비스를 사용하여 구성됩니다.
😜 추가 지식
소켓이 프로세스 사이의 인터페이스라는 건 소켓으로 정보를 주고 받는다는 뜻입니다.
🎁소켓에 대한 깊은 내용은 여기에 따로 정리했습니다.
프로토콜 | 동작 방식 |
---|---|
HTTP | 웹 클라이언트와 웹 서버 사이에서 웹 페이지 데이터를 주고 받는다. |
POP, SMTP, IMAP | 메일을 송수신하고 보관한다. |
SMP,AFP | LAN 안에서 파일을 공유한다. |
프로토콜 | 동작 방식 |
---|---|
DNS | 도메인명과 IP어드레스의 정보를 서로 변환할떄 사용한다. |
DHCP | LAN 내의 컴퓨터에게 IP 어드레스를 할당할 때 사용한다 |
SSL/TLS | 통신 데이터를 암호화하여 주요 정보를 안전하게 주고받을 때 사용한다 |
😜 추가 지식
- active 모드 (서버가 클라이언트에게 요청, 방화벽 등으로 막힐 시 사용)
- FTP 클라이언트에서 FTP 서버의 21번 포트에 접근 인증을 요청한다.
-> FTP 클라이언트 자신의 Data 전송 포트 번호 57775를 서버에게 전송한다.- FTP 서버에서는 FTP 클라이언트에게 "OK" 응답을 보낸다.
- FTP 서버에서 생성한 20번 포트에서 FTP 클라이언트의 57775 포트로 데이터 채널 연결을 요청한다.
( Active Mode에서 Data Port는 Command Port + 1 이다 )- FTP 클라이언트는 FTP 서버에게 "OK" 응답을 보내고 데이터 채널 연결이 완료된다.
- passive 모드 (클라이언트가 서버에게 요청)
- FTP 클라이언트에서 FTP 서버의 21 포트로 접근 인증을 요청한다.
-> 이 때 Passive Mode를 사용할 것이라는 것도 알린다.- FTP 서버는 FTP 클라이언트에게 "OK"라는 응답을 보내면서
데이터 채널 포트번호 59175를 클라이언트에게 알려준다.- FTP 클라이언트에서 생성한 52757번 포트에서 서버의 59175포트로 데이터 채널 연결을 요청한다.
- FTP 서버는 FTP 클라이언트에게 "OK"라는 응답을 보내고 채널 연결을 진행한다.
- SFTP 연결
- 일반 FTP연결에서 보안성을 강화한 것으로 서버와 클라이언트 간의 데이터 전송 시 계정 정보 등을 암호화하여 해킹이나 보안 상의 문제를 사전에 방지할 수 있다.
😜 추가 지식
- 예시
내 메일 : abc@naver.com
상대방 메일 : def@daum.net상대방에게 메일을 보낸다고 가정해봅시다.
naver 메일 서버와 daum 메일 서버가 각각 존재합니다.
저는 naver 의 메일서버에 보낼데이터를 전송합니다. (SMTP)naver 메일 서버는 daum 메일 서버에게 메일을 보냅니다. (SMTP)
그러면 그 메일 정보는 daum 메일 서버 보관함에 저장되고,
상대방은 daum 메일 서버 보관함에서 메일을 가져오게 됩니다. (SMTP가 아님)
- 왜 메일을 가져올 때는 SMTP를 이용하지 않을까?
SMTP는 심플하기 때문에 Mail Box (Po box) 까지만 갈 수 있습니다.
수신자는 태블릿, 컴퓨터, 휴대폰 등등에서 모두 메일을 확인할 수 있기 때문에,
SMTP는 메일 서버 보관함까지만 작용하고, 수신자는 위 3가지 옵션을 통해 직접적으로 메일을 가져오게 됩니다.
POP3 | IMAP |
---|---|
- 메일 서버에서 로컬장치로 이메일을 다운로드 받음. - 수신함 즉, 받은 메일만을 다운로드 하여 조회 가능. - 로컬장치로 다운로드 시, 서버에서는 이메일 삭제 -오프라인 지원 | - 메일 서버에서 동기화가 이루어짐. - 수신함 뿐만 아니라 모든 메일함을 조회 가능. - 서버에 이메일 실시간 존재. -온/오프 모두 지원 |
예시)
www.naver.com은 호스트 네임이고, /test/picture.gif는 경로 이름입니다. 브라우저는 요구한 웹 페이지를 보여 주고 여러 가지 인터넷 구성 특성을 제공합니다. HTTP의 서버 측을 구현하는 웹 서버(Web server)는 URL로 각각을 지정할 수 있는 웹 객체를 갖고 있습니다.
🎁HTTP에 대한 깊은 내용은 여기에 따로 정리했습니다.
페이지가 기본 HTML 파일과 10개의 JPEG 이미지로 구성되고, 이 11개의 객체가 같은 서버에 있다고 가정해 봅시다. 기본 HTML 파일의 URL은 다음과 같습니다.
연결 수행 과정은 다음과 같습니다.
HTTP 클라이언트는 HTTP의 기본 포트 번호 80을 통해 www.someschool.edu 서버로 TCP 연결을 시도한다. TCP 연결과 관련하여 클라이언트와 서버에 각각 소켓이 있게 된다.
HTTP 클라이언트는 1단계에서 설정된 TCP 연결 소켓을 통해 서버로 HTTP 요청 메시지를 보낸다. 이 요청 메시지는 /someDepartment/home.index 경로 이름을 포함한다.
HTTP 서버는 1단계에서 설정된 연결 소켓을 통하여 요청 메시지를 받는다. 저장장치로부터 /someDepartment/home.index 객체를 추출한다. HTTP 응답 메시지에 그 객체를 캡슐화한다. 그리고 응답 메시지를 소켓을 통해 클라이언트로 보낸다.
HTTP 서버는 TCP에게 연결을 끊으라고 한다.(그러나 실제로 TCP 클라이언트가 응답 메시지를 올바로 받을 때까지 연결을 끊지 않는다.)
HTTP 클라이언트가 응답 메시지를 받으면, TCP 연결이 중단된다. 메시지는 캡슐화된 객체가 HTML 파일인 것을 나타낸다. 클라이언트는 응답 메시지로부터 파일을 추출하고 HTML 파일을 조사하고 10개의 JPEG 객체에 대한 참조를 찾는다.
그 이후에 참조되는 각 JPEG 객체에 대하여 처음 네 단계를 반복한다.
😜 추가 지식
RTT는 패킷이 클라이언트로부터 서버까지 가고, 다시 클라이언트로 되돌아오는 데 걸리는 시간을 뜻합니다. 패킷 전파 지연, 중간 라우터와 스위치에서의 패킷 큐잉 지연, 패킷 처리 지연 등을 포함합니다.
위 하이퍼 링크를 클릭하면 다음 그림과 같이 연결이 됩니다.
이 클릭은 브라우저가 웹 서버 사이에서 TCP 연결을 시도하게 됩니다. 이는 "3-Way Handshake"를 포함합니다.
3-Way Handshake는
- Client > Server : TCP SYN
Server > Client : TCP SYN ACK
Client > Server : TCP ACK의 과정을 이루는 TCP 통신방법이다.
비지속 연결은 몇 가지 단점이 있습니다.
첫째, 각 요청 객체에 대한 새로운 연결이 설정되고 유지되어야 합니다.
둘째, 앞서 언급한 대로 각 객체는 2 RTT를 필요로 했습니다.
HTTP1.1 지속 연결에서 서버는 응답을 보낸 후에 TCP 연결을 그대로 유지합니다.
위 이미지를 보면 세 유형의 DNS 서버로 구성되는데 그 세가지는 아래와 같습니다.
위 세분류의 상호작용을 어떤 DNS 클라이언트가 호스트 네임 www.amazon.com의 IP 주소를 얻기 원한다는 예시로 확인해 보겠습니다.
😜 추가 지식
다양한 DNS 서버들의 상호작용
간단히 말하자면 최상위부터 해서 재귀적으로 순환하며 찾을 때 까지 반복한다는 말입니다.
위 그림을 한번 살펴봅시다.
1. cse.nyu.edu가 먼저 자신의 로컬 DNS 서버 dns.nyu.edu에게 DNS 질의 메시지를 보냅니다.
2. 질의에는 변환되어야 하는 호스트 네임, 즉 gaia.cs.umass.edu가 포함됩니다.
3. 로컬 DNS 서버는 edu를 인식하고, edu에 대한 책임을 가진 TLD 서버의 IP 주소 리스트를 로컬 DNS 서버에게 보냅니다.
4. 로컬 DNS 서버는 질의 메시지를 TLD 서버로 보냅니다.
5. 그다음 TLD 서버는 umass.edu를 인식하고 dns.umass.edu로 이름 지어진 책임 DNS 서버의 IP 주소를 응답합니다.
6. 마지막으로 로컬 DNS 서버는 직접 dns.umass.edu로 질의 메시지를 다시 보내고, gaia.cs.umass.edu의 IP 주소로 응답합니다.
이 예에서 하나의 호스트 네임 매핑을 얻기 위해 질의 메시지 네 번과 응답 메시지 네 번, 총 8번 DNS 메시지가 보내졌음에 주목해야 합니다.
예시)
- 호스트 apricot.nyu.edu가 cnn.com에 대한 IP 주소를 dns.nyu.edu에게 질의한다고 생각해 봅시다.
- 또한 몇 시간 후에 NYU의 다른 호스트 kiwi.nyu.edu가 dns.nyu.edu에게 같은 호스트 네임을 질의한다고 가정해 봅시다.
캐싱으로 인해 로컬 DNS 서버는 두 번째로 질의한 호스트에게 다른 DNS 서버로의 질의 없이 즉시 cnn.com의 IP 주소를 보낼 수 있습니다. 로컬 DNS 서버는 또한 TLD 서버의 IP 주소를 저장할 수 있습니다. 그러므로 로컬 DNS 서버가 질의 사슬에서 루트 DNS 서버를 우회하도록 합니다.
해당 사이트의 내용과 학술 서적을 참고로 작성했습니다. 추후에 더 알게 되는 내용들을 추가하겠습니다.
제임스크로제, 키스로스. (2018). 컴퓨터 네트워킹 하향식 접근. 서울 : 퍼스트 북
OSI 7 계층이란?, OSI 7 계층을 나눈 이유
씩이 머릿속
jeanbaek.log
JuHyeong.dev
김희규
console.log
FTP란 무엇인가 ?