Internet | ISO/OSI 7계층 | |
7계층 | 응용계층 | 응용계층 |
6계층 | 프레젠테이션(표현)계층 | |
5계층 | 세션 계층 | |
소켓 | ||
4계층 | 전송계층 | 전송계층 |
응용이란
네트워크로 연결된 컴퓨터들이 협력하여 제공하는 서비스
EX) 구글 검색
네트워크 응용의 구조
- Client - Server 구조
- 언제나 열려있는 Server로 인해 Client가 언제든지 서비스를 제공받을 수 있는 것 EX) 웹검색
- Peer - to - Peer(P2P) 구조
- 서버를 거치지않고 서로의 정보를 즉각적으로 받을 수 있는 것 EX) 토렌트
- Hybrid 구조
- 서로를 연결해주는 중간 역할의 서버는 존재하지만 연결한 후에 두 사람 간의 통신 중 에는 직접적인 관여를 하지 않는다 EX) Skype
프로세스간 통신기법
프로세스란
하나의 컴퓨터에서 독립된 메모리 공간을 가지고 수행되고 있는 프로그램의 단위
프로세스의 종류
프로세스를 통신하는 과정에서는 전송계층이 빠질 수 없다
그리고 프로세스의 종류 또한 중요하다
- 클라이언트 프로세스 : Client - Server 구조에서 봤던 클라이언트
- 서버 프로세스 : Client - Server 구조에 봤던 서버
- 피어 프로세스 : Peer - to - Peer를 보면 개인의 컴퓨터가 클라이언트뿐 아니라 서버가 될 수 있다 이를 두고 말한다
1. 프로세스의 주소
프로세스의 기본적인 통신은 (IP주소 + 포트번호) 를 통한 통신을 하게 된다. 이는 편지 봉투와 비교하면 이해가 된다
우리가 편지를 작성할때 편지지에 내용을 적고 그 밖에 받을 사람의 주소를 작성한다 그럼 각자 편지를 주고받을 때 이 편지는 어디서 왔고 어디로 보내야 하는지를 알 수 있는 것이다.
- 기계 주소
- IP주소 : xxx.xxx.xxx.xxx
- 여기서 하나의 xxx는 0~255의 값을 가진다 예를 들어 176.37.1.6 같은 숫자 조합이 하나의 IP주소가 되는 것이다
- IP주소를 최대한 조합하면 40억 개의 조합이 만들어진다 이는 너무 부족한 수인 것이다
- 포트 번호
- 정보를 전달해 줄 때 어떤 곳에 정보를 줘야 하는지 정해준다
- 각각 2^16개로 TCP와 UDP로 존재한다
2. 소켓 통신
우리는 앞서 편지지로 예로 들어 프로세스의 주소를 통한 방법을 보았다 하지만 이것은 반복되는 요청에서 좋은 방법이라고 하기 애매하다
만약 우리가 똑같은 서버에 계속해서 요청을 보내게 된다면 우리는 계속 편지를 주고받는 번거로움이 생기는 것이다.
이를 해결하기 위해 있는 것이 바로 소켓이다.
만약 누군가가 최초의 한번 편지지를 적어서 서버에게 보내면 그 두 개를 연결하는 통로인 소켓이라는 것이 생성된다 그럼 이 소켓을 통해 굳이 편지지를 쓰지 않고 필요한 정보를 바로바로 가져올 수 있는 것이다
이와 같은 방식으로 응용계층은 세션계층과 통신하고 결과적으로 세션계층과 전송계층 사이에는 소켓을 이용한 방식으로 연결하고 있다라고 생각할 수 있다
※ 전송계층의 서비스
우리는 소켓을 이용하여 응용계층과 전송계층을 연결해준다 라고 배웠다.
그럼 전송계층은 무엇일까? 응용계층의 원활한 이해하기 위해 전송계층의 구조에 대해 조금만 알아보자
- TCP
- 연결기반 전송 계층 (연결에 대한 관리)
- 데이터 유실 복구 서비스
- 데이터 순서의 보장
- 혼잡에 민감한 패킷전송률을 조정
- 연결기반 전송 계층 (연결에 대한 관리)
- UDP
- 비연결기반 전송 계층
- 데이터 유실 가능
- 데이터 순서의 역전 가능
- 최대한 성능으로 패킷전송
- 비연결기반 전송 계층
※ 세션계층
세션 계층은 네트워크 상에서, 양 종단간 일회용 논리적 연결이다
세션 계층에 논리적 연결을 담당하는 대표적인 프로토콜 FTP와 HTTP에 대해서 알아보자
FTP ( File Transfer Protocol)
원격 Host에 있는 파일을 가져오거나 보내기위한 프로토콜
- FTP의 특징
- 세션 로그인과 종료가 존재
- 로그인을 통한 권한 획득
- 로그인 정보를 서버가 관리
- Stateful Protocol(사용자의 상태를 확인할 수 있다)
FTP는 자체적으로 모든 전송 과정과 권한을 가지고 있다 하지만 이것은 굉장히 위험하다 FTP는 연결되어있는 stateful한 상태의 프로토콜이고 정보를 원할때 마다 자신의 아이디와 비밀번호를 전송하여 권한을 확인하고 전송하기 때문에 id와 pw가 전혀 보호되지 않는다 라고 할 수 있다.
하지만 HTTP는 서버측에서 권한관리를 직접 할 수 있고 설정또한 더욱 유연하게 할 수 있다.
그 설정은 응용계층에서 하게되고 그 설정을 자세히 배우기 위한 디딤판이라고 생각하면 된다
다음 게시물에서 HTTP에 대한 자세한 얘기를 다뤄보자
'CS' 카테고리의 다른 글
Cookie와 Session (4) | 2023.05.01 |
---|---|
HTTP(1). GET & POST (0) | 2023.04.27 |
전송계층 - Reliable Networking ( End - To - End ) (0) | 2023.03.21 |
P2P ( Peer - to - Peer ) (0) | 2023.03.17 |
컴퓨터 네트워크 (2) | 2023.03.10 |