컴퓨터 네트워크 02 : 네트워크 응용의 구조(Client-Server, P2P), 프로세스 종류, FTP, HTTP
네트워크 응용의 구조
- Client-Server구조 : 컴퓨터와 컴퓨터가 통신하는 구조.
- 사용자의 요청(클라이언트 요청), + 서버의 응답 => N:1구조
- LAN, WAN을 이용해 네트워크 서버에 요청을 수신하고 서버가 클라이언트에 응답을 전달함.
- 중앙화
- Peer-To-Peer(P2P)구조 : 클라이언트, 서버 없이 모든 컴퓨터가 데이터를 주고받을 수 있음. 이 때 각 컴퓨터를 노드 또는 피어라고 부름.
- 모든 컴퓨터가 클라이언트이자 서버 역할을 하게 됨.
- 탈중앙화
- 토렌트, 비트코인
- 장점: 필요 하드웨어 적음. 단일 시스템 의존하지 않음.
- 단점: 안전에 취약함. 조직적 관리, 유지가 어려움.
- 하이브리드
프로세스
프로세스: cpu에서 연속적으로 실행되고 있는 모든 프로그램.
여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하고, 같은 시간에 여러 개의 프로그램을 띄우는 방식을 멀티테스킹이라고 함.
- 프로세스의 종류
- 서버 프로세스
- 서버 컴퓨터엣 실행되고 네트워크의 다른 프로그램이나 장치에 서비스를 제공하는 프로그램.
- 클라이언트 또는 피어로부터 들어오는 요청을 수신하고 응답함.
- 웹 서버, 이메일 서버, 파일 서버, 데이터베이스 서버 등
- 클라이언트 프로세스
- 클라이언트 컴퓨터에서 실행되고 특정 서비스 또는 리소스에 대한 요청을 서버 프로세스로 보내는 프로그램.
- 웹 브라우저, 이메일 클라이언트, 파일 전송 유틸리티, 데이터 베이스 클라이언트 등
- 피어 프로세스
- P2P 네트워크에서 실행되는 프로그램. 여러 컴퓨터가 중앙 서버 없이 자원을 공유하고 서로 직접 통신 가능.
- 각 피어가 클라이언트, 서버 역할을 모두 수행해 필요에 따라 리소스를 제공하고 소비함.
- 토렌트 등
- 서버 프로세스
- 프로세스 주소
- IP 주소 + 포트번호
인터넷 전송계층의 서비스
- 서로 다른 호스트에서 실행되는 응용 프로그램에 종단간 통신 서비스를 제공.
- 전송 제어 프로트콜(TCP)
- 연결 기반 전송 계층
- 연결에 대한 관리
- 데이터 순서 보장
- 혼잡에 민감한 패킷 전송률 조정
- 사용자 데이터그램 프로토콜(UDP)
- 무연결 전송계층
- 데이터 유실 가능
- 데이터 순서 역전 가능
- 전송 제어 프로트콜(TCP)
네트워크 프로토콜 종류
HTTP
- 웹 페이지 내용을 웹 서버에서 클라이언트의 웹 브라우저로 전송
- 단방향 시스템
- 인증 필요X
- 웹 페이지와 같은 작은 파일 전송에 더 효율적
- 클라이언트 요청이 있을 때 서버가 해당 페이지에 대한 데이터를 전송하고 곧바로 연결 끊음
- 서버에 과부하 줄 수 있음
FTP
- FTP 서버와 FTP 클라이언트 간 파일을 업로드 및 다운로드 하는 데 사용.
- 양방향 시스템
- 웹 페이지보다는 더 큰 파일을 전송할 때 효율적.
- 원하는 파일을 작업하는 동안 계속 서버와 연결되어 있음
소켓
- 소켓: 데이터 송수신 역할을 하는 소프트웨어 구성 요소
- 클라이언트와 서버가 연결되면 강제 접속 해제 전까지는 연결 유지
- 서버 성능에 따라 클라이언트에 연결할 수 있는 개수가 제한됨.
- 실시간으로 데이터 주고 받는 형식
FTP(파일 전송 프로토콜)
인터넷, 로컬 네트워크를 통해 한 호스트에서 다른 호스트로 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜.(파일 송수신 서비스) 클라이언트-서버 아키텍쳐 사용.
Active 모드
(아래 포트는 디폴트 값으로, 서버 설정에서 수정할 수 있음.)
서버가 클라이언트에 접속하는 방식.
1. 클라이언트는 서버의 21번 포트로 접속한 후 자신이 사용할 두 번째 포트를 서버에 미리 알려준다.
2. 서버가 클라이언트 요청에 응답.(acks)
3. 서버의 20번 데이터 포트는 클라이언트가 알려준 두 번째 포트로의 접속을 시도.
4. 클라이언트가 서버 요청에 응답.(acks)
주의사항: 클라이언트 측 방화벽에 20번 포트가 차단됐다면 채널 연결 불가능.
서버측은 20번 포트는 아웃바운드 허용, 클라이언트는 인바운드 허용을 방화벽 설정에서 해줘야함.
Passive 모드
데이트 포트 번호를 특별히 지정하지 않는 경우 1024~65535번 중에서 사용 가능한 임의 포트를 사용하게 됨.
1. 클라이언트가 커맨드 포트로 접속을 시도.
2. 서버에서는 사용할 두 번째 포트를 클라이언트에게 알려줌.
3. 클라이언트는 다른 포트를 열어 서버가 알려준 포트로 접속 시도.
4. 서버가 클라이언트 요청에 응답함.(acks)
주의사항: 서버측 데이터 채널 포트가 막혀있는 경우 채널 연결 불가능.
서버 측에서 특정 범위의 포트만 허용해주면 포트 허용 문제를 해결할 수 있음.
HTTP
Hypertext Transfer Protocol, 브라우저와 서버 간 데이터를 주고받기 위한 프로토콜 방식.
Stateless 프로토콜: 상태없음이란, 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리됨.
기본 포트는 80번이며, 일반적으로 TCP/IP 통신 위에서 동작함.
URL: 서버에 자원을 요청하기 위해 입력하는 영문주소.
HTTP 요청 메서드
서버에 있는 데이터에 대한 특정 동작을 수행하는 방식
- GET : 존재하는 자원에 대한 요청
- POST: 새로운 자원을 생성
- PUT: 존재하는 자원에 대한 변경
- DELETE: 존재하는 자원에 대한 삭제
- HEAD: 서버 헤더 정보 획득(Response Body 반환)
- OPTIONS: 서버 옵션들을 확인하기 위한 요청. CORS에서 사용
HTTP 상태 코드
서버에서 설정해주는 응답코드를 받아올 수 있음.
프론트 단에서는 이 상태 코드로 에러 처리를 할 수 있기 때문에 중요함.
2xx - 성공
200번대의 상태 코드는 대부분 성공을 의미함.
- 200 : GET 요청에 대한 성공
- 204 : No Content. 성공했으나 응답 본문에 데이터가 없음
- 205 : Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
- 206 : Partial Conent. 성공했으나 일부 범위의 데이터만 반환
3xx - 리다이렉션
300번대의 상태 코드는 대부분 클라이언트가 이전 주소로 데이터를 요청하여 서버에서 새 URL로 리다이렉트를 유도하는 경우.
- 301 : Moved Permanently, 요청한 자원이 새 URL에 존재
- 303 : See Other, 요청한 자원이 임시 주소에 존재
- 304 : Not Modified, 요청한 자원이 변경되지 않았으므로 클라이언트에서 캐싱된 자원을 사용하도록 권고. ETag와 같은 정보를 활용하여 변경 여부를 확인
4xx - 클라이언트 에러
400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우. 유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생. 가장 익숙한 상태 코드는 404 코드. 요청한 자원이 서버에 없다는 의미.
- 400 : Bad Request, 잘못된 요청
- 401 : Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
- 403 : Forbidden, 서버에서 해당 자원에 대해 접근 금지
- 405 : Method Not Allowed, 허용되지 않은 요청 메서드
- 409 : Conflict, 최신 자원이 아닌데 업데이트하는 경우. ex) 파일 업로드 시 버전 충돌
5xx - 서버 에러
500번대 상태 코드는 서버 쪽에서 오류가 난 경우.
- 501 : Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
- 503 : Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우
URL, 요청 메서드, 상태 코드를 조합하면 아래와 같은 구조가 나타난다.
'CS 공부 > 컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 06 : TCP 흐름제어, 혼잡 제어 (0) | 2023.03.31 |
---|---|
컴퓨터 네트워크 05 : TCP UDP (0) | 2023.03.31 |
컴퓨터 네트워크 04 : IPv4 IPv6 (0) | 2023.03.24 |
컴퓨터 네트워크 03 : DNS 정리 (0) | 2023.03.24 |
컴퓨터 네트워크 01 : 네트워크의 역사, 전달 방식, 품질 기준, OSI 7계층 (0) | 2023.03.09 |