-
[CS 스터디] TCP/IP CH2. 네트워크 서비스와 애플리케이션 계층CS📟 2022. 8. 14. 14:14
*TCP/IP 쉽게, 더 쉽게 책의 스터디를 위한 정리 글입니다. 모든 블로그 글이 마찬가지지만 틀린 정보가 있다면 알려주세요!
애플리케이션 계층
- 애플리케이션 계층이란?
- 웹이나 이메일과 같은 서비스를 제공하는 계층
- 서비스는 독자적인 프로토콜을 가짐
- 사용자가 직접 사용하면 체감하는 계층
- 데이터 전송 관련 계층을 제외한 모든 영역
- 프로토콜
- 사용가자 직접 사용하는 프로토콜
- HTTP, POP, SMTP, IMAP, SMB, AFP, FTP, Telnet, SSH
- 사용가자 직접 사용하는 프로토콜
- 사용자가 직접 사용하지 않는 프로토콜
- OS나 다른 어플리케이션 계층의 프로토콜이 간접적으로 사용
- LAN, 인터넷의 원활한 사용을 위해 이면에서 동작
- DNS, DHCP, SSL/TLS, NTP, LDAP
프로토콜
- HTTP
- HTTP란?
- 클라이언트와 서버 사이에서 웹 페이지 데이터를 주고받음
- 가장 대표적인 서비스인 www가 HTTP 사용
- HTTP를 이용하여 웹페이지를 보여주는 방법
- 특정 웹페이지를 요청하면 HTML, CSS, JS 등 화면 구성에 필요한 파일 정보와 함께 응답을 보내고 브라우저가 해석하며 화면을 보여줌
- HTTP 메시지
- 통신과정에서 주고받는 정보
- 요청과 응답으로 구분
- 요청
- URL을 사용 : schema://host.domain/diretory/file 형식
- 요청 헤더에 url에 있는 정보들을 이 들어가서 서버에 있는 해당 파일을 요청한다
- 응답
- 첫 번째에 상태 코드가 들어옴
- 헤더에 파일 갱신 날짜, 크기 등의 정보가 들어옴
- 바디에 HTML이 들어옴
- GET과 POST
- GET
- 입력 폼의 내용이 요청행에 포함되어서 주소창에서 정보가 보임
- 이전 페이지를 누르면 한 단계 앞으로 이동 가능
- POST는
- 상대적으로 많은 데이터 전송 가능
- 정보를 저장하거나 변경할 때 이용
- 입력 폼의 내용이 보이지 않음 하지만 해석해서 내용을 노출할 수 있기 때문에 안전하지는 않음
- GET
- POP, SMTP, IMAP
- 메일을 송수신하고 보관
- SMTP
- stateful 한 프로토콜 (정송 종료 요청이 있어야 종료)
- 메일 서버로 메일을 보낼 때 사용
- 발신자의 메일 서버에서 수신자의 메일서버로 중계할 때도 사용
- POP
- 메일 서버에 저장된 메일을 확인할 때 사용
- 수신 메일 건수, 용량 확인, 메일 삭제에도 사용
- 현재는 3 버전을 사용 중이고 하위 버전가 차이가 커서 혼용이 안됨
- SMTP auth
- SMTP는 인증체계가 없어서 스팸으로 악용
- SMTP auth는 인증 기능이 추가된 프로토콜
- IMAP
- POP는 기본적으로 메일을 수신하면 삭제함
- IMAP는 수신 메일도 보관
- 저장공간이 부족한 모바일에서 이용
- SMB, AFP
- LAN안에서 파일 공유
- P2P에서 사용됨
- SMB : 윈도우
- AFP: MAC
- FTP
- 서버를 통해 파일 주고받음
- 인터넷에 연결된 서버에 파일을 전송할 때 주로 사용
- 웹 페이지를 전송할때 주로 사용
- FTP 서버 프로그램과 웹 서버 프로그램이 함께 구동 중이면 FTP로 HTML을 전송하고 HTTP로 서비스 가능
- 데이터 커넥션
- FTP 명령을 보내기 위한 접속
- 컨트롤 커넥션
- 파일 데이터를 주고받기 위한 접속
- 방화벽이나 가정용 초고속 인터넷 라우터를 사용하는 경우 통신이 차단되는 경우가 많음
- 패시브 모드를 사용해서 서버에서 클라이언트로 데이터 커넥션을 만들어주면 해결 가능
- Telnet, SSH
- 원격에서 서버 제어
- CLI
- 서버가 멀리 있는 경우가 많아 서버 관리에 사용
- RDP, RFB
- 컴퓨터 원격 제어
- GUI
- 윈도우에 내장된 원격 데스크톱은 RDP 사용
- VNC는 RFB 사용
- 마우스나 키보드의 제어 정보를 보내고 화면 이미지를 받기 때문에 압축기술도 함께 제공
- DNS
- 도메인명과 IP 주소의 정보를 서로 변환
- DHCP
- LAN내의 컴퓨터에게 IP 주소 할당
- SSL/TLS
- 통신 데이터를 암호화
- NTP
- 네트워크에 연결된 장비들의 시스템 시간 동기화
- LDAP
- 네트워크에 연결된 자원의 통합 관리에 필요한 디렉터리 서비스 제공
쿠키
- HTTP는 무상태 프로토콜이라 응답이 오면 통신이 끊어짐
- 여러 흐름에서 같은 사용자의 요청이라는 걸 알기 위해서 쿠키를 사용
쿠키의 사용방법
- 응답에 set-Cookie가 있는지 확인하고 있으면 로컬에 쿠키 형태로 저장
쿠키의 보안
- 웹 브라우저에서 자체 구현
- 쿠키가 생성된 웹 서버와 동일한 도메인을 사용하는 웹사이트에만 쿠키가 전송
- 저장된 쿠키들이 있다면 유효기간을 확인 후 지나면 폐기
- 쿠키 보안 취약점
- XSS
- 스니핑
- 공용 PC에서 유출
- HTML5 웹 스토리지 정보 유출
- 보안에 문제가 생길만한 정보들은 클라이언트 PC의 쿠키에 저장하면 안 됨
- 각종 정보는 서버에 저장이 원칙
- 세션 ID정도만 저장
P2P (Peer to Peer)
- 연결된 컴퓨터들이 서로 서버와 클라이언트의 역할을 하며 파일공유
- 관리하는 서버가 없기 때문에 연결되면 자신이 연결되었다는 것을 통보하여 공유 가능한 컴퓨터들을 식별
- 윈도우에서는 SMB를 사용하고 맥은 AFP를 사용
- 최근에는 다른 OS의 프로토콜도 지원할 수 있게 되어 설정만 하면 공유 가능
- 음성이나 동영상을 주고받을 때 많이 사용
VoiceoverIP & 영상 스트리밍
- 음성이나 영상은 텍스트에 비해 용량이 커서 UDP를 사용
- 전송 시에는 데이터를 압축하되 수신된 정보를 바로 재생할 수 있는 스트리밍 기술 이용
- 서버에서 찾은 후 P2P를 사용하는 하이브리드 방식도 사용
- 간혹 통신이 거부되는 상황이 있어서 HTTP메시지 안에 넣어서 전송하기도 한다
- UDP
- 일부가 누락되어도 신경 쓰지 않음
크롬 개발자 도구로 HTTP 메시지를 확인 가능
'CS📟' 카테고리의 다른 글
[TCP/IP] 인터넷 계층 (0) 2022.08.28 [TCP/IP] 트랜스포트 계층 (0) 2022.08.20 상태코드의 종류 (0) 2022.08.14 [TCP/IP] CH1. 컴퓨터 네트워크와 TCP/IP (0) 2022.08.04 객체 지향 내용 정리 (0) 2022.03.16 - 애플리케이션 계층이란?