[네트워크] 6차시 - 응용계층(3)-1

2023. 3. 9. 15:50CS/네트워크

728x90

//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎

 

 

FTP, HTTP와 같은 기본 응용 계층 프로토콜의 예를 배운다.

 

0. 세션계층

  • 컴퓨터끼리 어떻게 대화를 하는지에 대한 세부적인 내용에 대한 계층
  • FTP(File Transfer Protocol)
    • 목적: 원격 호스트에 있는 파일을 가져오거나, 보내기 위한 프로토콜
    • 가정 1) client 사용자는 server의 파일을 읽을 수 있는 권한의 계정이 있다.
    • 가정 2) 계정이 없는 경우도 접근 가능하도록
    • FTP의 특징
      • 세션 로그인과 종료가 존재
      • 로그인을 통하여 파일에 접근할 수 있는 권한 획득
      • 로그인 정보를 서버가 관리
      stateful protocol: 상태 정보를 서버가 이용, 관리
    • 서버는 나의 상태, 나의 위치, 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://formal.kau.ac.kr/commet/index.html
    • 동일한 페이지를 로딩할 수 있다.
  • http://formal.kau.ac.kr:8080/
    • 호스트 이름[:포트번호] 형태, 포트번호는 생략할 수 있다.
    • http는 기본적으로 80번 포트 번호를 사용하도록 약속되어 있음
    • 자원의 위치가 / 이후에 아무것도 없음: / 는 최상위 디렉터리, 이 시스템의 대표 자원을 반납해 달라는 의미
      • 일반적으로는 /index.html 파일을 요청하는 의미

 

[복습]

  1. 세션 계층: 컴퓨터끼리 어떻게 대화를 하는지에 대한 세부적인 내용에 대한 계층
    1. FTP: 원격 호스트에 있는 파일을 가져오거나, 보내기 위한 프로토콜, stateful protocol
    2. HTTP: 전 세계 인터넷에 있는 정보를 탐색하기 위한 프로토콜, stateless protocol
  2. HTTP의 기본 동작: 원하는 자료를 웹에 보내고 웹에서 받는 기본적인 동작, 요청에 대해 응답을 하면 끝나고(HTTP Transaction), 서버가 정보를 기억할 필요가 없다(stateless protocol)
  3. GET 요청: 원하는 자원을 가져오는 목적을 가지고 수행
    1. 하나의 트랜잭션으로는 하나의 파일만 가져올 수 있기 때문에 다른 파일을 가져오는 트랜잭션을 추가적으로 수행해야 한다.
  4. POST 요청: 자원을 서버에 게시하는 목적을 가지고 수행
    1. GET과 다르게 POST는 게시할 내용을 바디에 모두 담아 보냄
    2. GET은 여러 개의 자원이 있을 때 각 자원을 하나하나 자원의 URL을 이용해서 따로 계산(URI)
  5. 내용이 길어지거나 숨기고 싶은 내용을 서버에 보낼 때에는 POST를 이용해서 숨기는 방법이 더 유용할 수 있다.
  6. URL은 자원의 위치, URI는 동적으로 생성된 위치

 

 

 

 


한국항공대학교 김철기 교수님의 [컴퓨터 네트워크] 강의 정리입니다감사합니다.

http://www.kocw.net/home/cview.do?lid=a9c9cd4b08af7f1d 

 

컴퓨터 네트워크

현대의 컴퓨터는 네트워크와 분리해서는 생각할 수 없다. 수많은 정보의 교류, 부가가치의 창출은 모두 네트워크를 통해서 이루어 진다. 본 과목에서는 컴퓨터 네트워크의 구성요소를 이해하고

www.kocw.net

 

728x90