[네트워크] 6차시 - 응용계층(3)-1
2023. 3. 9. 15:50ㆍCS/네트워크
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
FTP, HTTP와 같은 기본 응용 계층 프로토콜의 예를 배운다.
0. 세션계층
- 컴퓨터끼리 어떻게 대화를 하는지에 대한 세부적인 내용에 대한 계층
- FTP(File Transfer Protocol)
- 목적: 원격 호스트에 있는 파일을 가져오거나, 보내기 위한 프로토콜
- 가정 1) client 사용자는 server의 파일을 읽을 수 있는 권한의 계정이 있다.
- 가정 2) 계정이 없는 경우도 접근 가능하도록
- FTP의 특징
- 세션 로그인과 종료가 존재
- 로그인을 통하여 파일에 접근할 수 있는 권한 획득
- 로그인 정보를 서버가 관리
- 서버는 나의 상태, 나의 위치, ID를 기억하고 계속적으로 관리해 주는 것이 일종의 세션,
- 로그인을 하면서 하나의 세션을 열었고 파일을 가져오고 읽는 등을 수행할 때마다 서버는 내 세션의 정보를 계속 유지하고 있다가 적절한 서비스를 제공: 세션 계층
- HTTP(Hyper Text Protocol)
- stateless protocol: 상태 정보를 이용하지 않음
1. HTTP
- 세션 계층(www: world wide web)
- HTML을 기본 프레젠테이션 계층으로 사용
- 목적: 전 세계 인터넷에 있는 정보를 탐색하는 것
- 발명: Tim Berners Lee가 CERN에서 1980년대 말에서 1990년대 초에 걸쳐 연구
- 기본적인 동작
- Web 자료를 가져와서(GET) 보여주기
- Web에 자료를 Posting 하기
- 원하는 자료를 웹에 보내고 웹에서 받는 기본적인 동작
- HTTP를 사용하는 가장 대표적인 어플리케이션: 인터넷 브라우저 → 주소창에 url 검색
- 주소창에 url 검색: 인터넷에 있는 굉장히 많은 자료 중에서 이 위치로 명명되는 정보를 보겠다
- 웹 브라우저는 요청하는 패킷을 웹 서버에게 보내고
- 웹서버는 <html> 문서를 응답하는 패킷으로 보낸다(프레젠테이션 계층)
- HTTP는 프로토콜이 단순하다.
- 요청에 대해 응답을 하면 끝나고 ⇒ HTTP Transaction
- 서버가 정보를 기억할 필요가 없어 굉장히 자유롭다 ⇒ Stateless Protocol
- FPT는 상대적으로 세션 레이어와 서버가 많은것을 담당하다 보니 굉장히 많은 내용이 세션 레이어 프로토콜을 구성하게 되며 자유도가 적어져서 HTTP에게 자리를 양보하게 된다.
1-1. GET 요청
- 원하는 자원을 가져오는 목적을 가지고 수행
- HTTP 요청 형식
[HTTP 요청 헤더]
첫 줄: GET (서버상의 자원의 위치 ex. /commet/index.html) (버전 ex. HTTP/1.1)
//매개변수: ______
Connection: (연결을 더 유지할 것인지 ex. keep-alive)
Accept: (어떤 종류의 파일을 받아들일 수 있는지 ex. text/html)
Host: (호스트 이름 ex. formal.kau.ac.kr)
user-agent: (웹브라우저 형태에 맞는 정보 ex. chrome은 Moeila/5.0)
//헤더의 끝은 한 줄을 띄움으로써 끝남: GET 요청의 끝
- 서버의 응답 형식
[헤더] - 자원, 서버에 대한 정보
HTTP/1.1 200 OK
Date: (문서를 준 날짜와 시간)
Server: (ex. Apache/2.4.6)
Last-modified: (최종적으로 수정된 날짜)
Content-length: (body가 언제 끝나는지를 알 수 있는 정보 ex. 120)
Keep-Alive: (ex. timeout=5, max=100)
Connection: Keep-Alive
Content-Type: text/html (html 문서다)
//한 줄 띄우기
[바디] - 실제 자원(파일)
<html>
<body>
<H1>Hello, World</H1>
</body>
</html>
- 하나의 트랜젝션으로는 하나의 파일 밖에 가져오지 못하기 때문에 이미지 파일을 가져오는 트랜젝션을 추가적으로 수행해야 한다.
GET /comnet/kau.gif HTTP/1.1
HTTP/1.1 200 OK
1-2. POST 요청
- 자원을 서버에 게시하는 목적
- 게시판에 글 올리기. 인스타그램에 사진 올리기, 웹브라우저를 이용해 이메일 보내기, 로그인
- GET과 다르게 POST는 게시할 내용을 함께 보냄
- GET은 여러 개의 자원이 있을 때 각 자원 하나하나마다 자원의 url을 이용해서 따로따로 계산
- POST는 모든 자원을 바디에 담아서 올림
- 형식 - method=”post”
[Post 헤더]
POST (자원의 위치 ex. /commet/) (버전 ex. HTTP/1.1)
Host: (호스트 이름 ex. formal.kau.ac.kr)
user-agent: (웹브라우저 형태에 맞는 정보 ex. chrome은 Moeila/5.0)
//한 줄 띄우기
[Post 바디]
- method = “get”으로도 자원을 서버에 게시할 수 있다.
입력한 내용이 GET 뒤에 URL에 붙어있다. → URI가 됨
- URL: http://formal.kau.ac.kr
- URI: htp://formal.au.ac.kr:8080/comnet?id=kau&pw=kau&command=login
- URL은 자원의 위치, URL뒤에 인자가 있으면 이미 어디에 위치해 있는 정적인 자원이 아니라 동적으로 생성된 위치이기 때문에 URI(Univeral Resource Identifier)라고 부른다.
- 물음표를 붙이고 인자를 시작
- 이 경우 패스워드가 노출된다.
- 간단한 내용은 get을 이용하지만, 내용이 길어지거나 숨기고 싶은 내용을 서버에 보낼 때는 post를 이용해서 숨기는 방법이 더 유용할 수 있다.
2. URL(Universal Resource Locator)
- http://formal.kau.ac.kr/comnet/
- ( http: ) - 프로토콜 이름, ‘세션 계층의 프로토콜은 http이다.’라는 뜻
- 프로토콜 이름이 바뀌면 resource locator의 뒷부분 이름도 바뀜: ( file: ), ( fcp: )
- ( //formal.kau.ac.kr ) - //은 url의 시작을 의미, 이후는 접속하는 호스트의 이름
- IP번호를 나열하는 대신 호스트 이름을 사용
- ( /comnet/ ) - 호스트 안에 있는 리소스의 주소, 실제로 자원이 있는 위치
- 윈도우 파일 - c:\windows\a.exe : 최상위 디렉터리 c라는 볼륨에 있는 윈도우즈 디렉터리에서 a.exe 파일을 원한다.
- 윈도우즈를 제외한 다른 컴퓨터들은 백슬래쉬(\)가 아니라 슬래쉬(/)를 사용한다.
- ( http: ) - 프로토콜 이름, ‘세션 계층의 프로토콜은 http이다.’라는 뜻
- http://formal.kau.ac.kr/commet/index.html
- 동일한 페이지를 로딩할 수 있다.
- http://formal.kau.ac.kr:8080/
- 호스트 이름[:포트번호] 형태, 포트번호는 생략할 수 있다.
- http는 기본적으로 80번 포트 번호를 사용하도록 약속되어 있음
- 자원의 위치가 / 이후에 아무것도 없음: / 는 최상위 디렉터리, 이 시스템의 대표 자원을 반납해 달라는 의미
- 일반적으로는 /index.html 파일을 요청하는 의미
[복습]
- 세션 계층: 컴퓨터끼리 어떻게 대화를 하는지에 대한 세부적인 내용에 대한 계층
- FTP: 원격 호스트에 있는 파일을 가져오거나, 보내기 위한 프로토콜, stateful protocol
- HTTP: 전 세계 인터넷에 있는 정보를 탐색하기 위한 프로토콜, stateless protocol
- HTTP의 기본 동작: 원하는 자료를 웹에 보내고 웹에서 받는 기본적인 동작, 요청에 대해 응답을 하면 끝나고(HTTP Transaction), 서버가 정보를 기억할 필요가 없다(stateless protocol)
- GET 요청: 원하는 자원을 가져오는 목적을 가지고 수행
- 하나의 트랜잭션으로는 하나의 파일만 가져올 수 있기 때문에 다른 파일을 가져오는 트랜잭션을 추가적으로 수행해야 한다.
- POST 요청: 자원을 서버에 게시하는 목적을 가지고 수행
- GET과 다르게 POST는 게시할 내용을 바디에 모두 담아 보냄
- GET은 여러 개의 자원이 있을 때 각 자원을 하나하나 자원의 URL을 이용해서 따로 계산(URI)
- 내용이 길어지거나 숨기고 싶은 내용을 서버에 보낼 때에는 POST를 이용해서 숨기는 방법이 더 유용할 수 있다.
- URL은 자원의 위치, URI는 동적으로 생성된 위치
한국항공대학교 김철기 교수님의 [컴퓨터 네트워크] 강의 정리입니다. 감사합니다.
http://www.kocw.net/home/cview.do?lid=a9c9cd4b08af7f1d
728x90
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 6차시 - 응용계층(3)-3 (0) | 2023.03.09 |
---|---|
[네트워크] 6차시 - 응용계층(3)-2 (0) | 2023.03.09 |
[네트워크] 4 & 5차시 - 응용계층(1), (2) (0) | 2023.02.22 |
[네트워크] 3차시 - 컴퓨터 네트워크의 계층 (0) | 2023.02.10 |
[네트워크] 2차시 - 컴퓨터 네트워크의 품질 기준 (0) | 2023.02.07 |