HTTP : 연결 한번으로 모든 파일을 받을 수 있음, stateless(상태저장 안함)

 

POST method : 홈페이지 로딩에 필요한 이미지들을 body에 포함시켜 전송

 

URL method : GET을 써서 URL에 포함시켜 전송

 

User-server state : 위에서는 상태가 저장되지 않는다고 했으나 상태를 저장하는 방법이 존재 -> cookies를 사용

cookie header line이 HTTP 응답 메시지에 포함

다음 HTTP 요청 메시지에도 포함

User host에 보관되고 user browser의해 관리

웹 사이트의 back-end database에 저장하고 PC에는 Key를 저장하여 사용 -> key가 쿠키파일

 

ex) 최초로 접속한 쇼핑 사이트에서 request를 하면 고유 ID를 받고 웹 사이트는 ID와 관련된 back-end database를 저장

     다음 접속부터는 요청할 필요없이 ID를 확인하고 database에 저장된 것들을 보내줌

 

Cookie가 사용되는 곳

권한을 줄 때

쇼핑 카트 - 장바구니

추천 상품 목록

web e-mail에서 user 세션 상태

 

"상태"를 유지하는 방법
    프로토콜 endpoint : 여러 트랜잭션을 통해 보낸 사람 /받는 사람에서 상태를 유지
    쿠키 : http 메시지가 상태를 전달

 

그러나 쿠키는 privacy의 문제가 있음

쿠키를 사용하면 각 사이트들이 나의 선호도같은 정보들을 배울 수 있게 함

이름과 이메일 같은 정보들을 제공함

 

Web caches(proxy server) : 대행 서버 - 오리지널 서버들의 노드를 덜어줌

많은 클라이언트들이 하나의 오리지널 서버에 직접적으로 무수한 요청을 하게 된다면 서버에 부담이 갈 수 밖에 없음

 

Proxy server를 사용하면 미리 저장해 둔 작업에대한 응답을 오리지널 서버에 갈 필요없이 바로 전달 할 수 있음

따라서 없는 응답을 오리지널 서버에 요청하는 클라이언트도 될 수 있고 가지고 있는 응답을 클라이언트에 바로 보내주는 서버도 될 수 있음

-> 데스크탑에서 캐쉬메모리 역할을 함

 

왜 Web caching을 사용하나?

응답시간을 단축 할 수 있음

트레픽을 감소시킬 수 있음

캐시를 통한 밀도 향상 : 열악한 컨텐츠 제공회사가 효과적으로 컨텐츠를 제공 할 수 있게 됨

 

지연 시간 계산 예제 - 캐쉬서버를 사용하지 않을 경우

 

 

요청하는 평균 오브젝트 크기가 100K bits

1초에 15번의 요청 -> 100K * 15 = 1.5Mbps : 1초당 1.5Mbit를 요청

RTT : 2 sec

access link rate : 1.54Mbps

 

요청을 1초에 1.5Mbit씩 하므로 access link에 1초에 1.5Mbit의 용량이 지나가기 때문에 access link 이용률은 99%가 되기 때문에 수 분의 지연이 발생될 수 있음

 

LAN사용률은 1Gbps의 LAN이기 때문에 1.5M/1G =  0.15%밖에 안됨 -> 매우 작은 딜레이는 무시가능

 

      딜레이를 해결하기 위해 access Link를 넓힌다면?

access Link가 154Mbps가 된다면 access Link사용률은 1.5/154 = 0.99 %가 되어 수 분에서 지연을 무시할 수 있을 정도가 됨

 

그러나 이 방식을 이용하면 많은 비용이 발생

 

캐시 서버를 이용한다면?

 

 

아까와 같은 조건에서 local web cache를 사용한다고 가정

 

초당 1.5Mbit를 요청

access Link rate : 1.54Mbps

RTT : 2sec

hit : 40%

miss : 60%

에서 hit는 캐시서버에 원하는 정보가 있는 경우(대략 10msec)고 miss는 캐쉬에 정보가 없어서 orign server로 요청해야 하는 경우

 

따라서 초당 요청 용량이 0.6 * 1.5Mbit = 0.9Mbit가 됨

 

여기서 access Link의 이용률은 0.9M/1.54M = 0.58 -> 58%로 줄어듦 / 0.8미만의 트레픽은 작은 지연(mesc)에 속함 -> 무시 가능

 

결론적으로 RTT요청도 60%만 요청하므로 (2+0.01) * 0.6 = 1.2 sec가 되고 -> miss가 나면 캐쉬로 가져온 후 캐쉬에서 다시 가져오므로 10msec만큼 더 걸림

0.4 * (캐쉬 서버에서 요청한 정보를 가져오는 딜레이 0.01sec)

 

 

Conditional GET

만약 서로 다른 두 클라이언트가 같은 내용을 요청했을 때, 마침 그 요청사항에 대한 응답이 수정이 되었다면?

한 클라이언트는 수정되기 전의 응답을, 다른 클라이언트는 수정된 후의 응답을 각각 가져가게 될 수 있음

 

1. 목표 : 캐시에 최신 캐시 버전이 있는 경우 object를 보내지 않음
    객체 전송 지연 없음
    링크 사용률 낮춤
2. 캐시 : HTTP 요청에서 사본의 날짜 지정
    If-modified-since : <날짜> -> 이후에 수정된게 없다면 304 Not Modified 응답, 있다면 수정된 데이터 바로 보냄
3. 서버 : 캐시 된 복사본이 최신인 경우 응답 object가 없음
    HTTP / 1.0 304 Not Modified

 

 

Electronic mail(전자메일) : SMTP(Simple Mail Transfer Protocol), 사용자 에이전트, 메일 서버 를 사용 

user agent : 사용자가 자신의 컴퓨터에서 메일을 읽고, 응답하고, 전달하고, 저장하고 구성하게 해줌 -> 사용자가 메일작성을 끝내면 메일서버로 보냄, 혹은 메일서버에서 메일을 가져옴

 

mail server : 메일서버는 전자메일 기반구조의 중심을 형성 -> 많은 요청들에 대한 응답을 해주고 메일들을 저장해놓는 메일박스 역할을 함

만약 메일전송을 요청 받았는데 수신자의 메일서버가 불안정하다면 이 메일은 메시지 큐에 저장되어 30분 간격으로 재전송 됨

 

SMTP : 메일 서버에 요청할 때 사용되는 프로토콜 - SMTP는 메일을 송신자의 메일 서버로부터 수신자의 메일 서버로 전송하는 데 TCP의 신뢰적인 데이터 전송 서비스를 이용

각 메일 서버 사이를 이어주는 역할 -> 메일을 보낼 때는 클라이언트, 메일을 받을 때는 서버로 작용됨

 

user agent(송신자)창에 메일 작성 -> 자신의 mail서버(G-mail 등)에 보냄(메시지 큐에 저장) -> 받는 사람의 mail서버(학교 메일)에 보냄 -> 사용자 메일박스에 저장 -> user agent(수신자)에 접속하여 mail을 확인

HTTP와 SMTP의 공통점과 차이점

HTTP와 SMTP는 공통적으로 한 호스트에서 다른 호스트로 파일을 전송하는 데 이용됨

TCP연결은 둘 다 클라이언트가 하게 됨

 

HTTP는 기본적으로 클라이언트가 서버에서 파일을 가져오는 Pull방식을 사용

SMTP는 기본적으로 클라이언트가 서버로 파일을 보내는 Push방식을 사용

 

Mail message format

 

header line

To : 보내는 사람

From : 받는 사람

subject : 주제(제목)

 

body : 메시지 내용이 ASCII 캐릭터형으로만 저장

 

보낼때는 SMTP를 사용하여 각 Server로 보냄, 확인할 때는

POP : post office protocol

IMAP : Internet Mail Access Protocol

HTTP : Hyper Text Transfer Protocol - G-mail, Hanmail, Yahoo Mail 등

 

POP3 : 사용자 에이전트가 메일 서버의 포트110번으로 TCP연결을 열 때 시작

연결이 설정되면 POP3은 3단계 과정으로 진행

인증 : 사용자 이름과 비밀번호 전송(user, pass)

트랜젝션 : 메시지를 가져오고, 삭제를 위해 메시지에 표시하거나 삭제표시를 지울 수도 있으며, 메일 통계를 얻을 수도 있음

갱신 : 마지막으로 quit명령이 내려진 후에 일어남 - 삭제 표시된 메시지를 삭제

 

POP3은 서버의 용량을 줄이고 내 PC에서 메일들을 관리하고자 할 경우 사용하고 지우면 다시는 읽을 수 없음

 

IMAP : 사본을 가져옴(매번 카피)

모든 메시지를 한 곳에서 관리

사용자가 폴더에서 메시지를 구성할 수 있음 - 메시지를 생성한 새 폴더로 옮기거나 읽거나 삭제 가능

다중 사용자 메일 박스와 서버에 기반을 둔 저장 폴더를 만들어 줌

 

 

 

 

 

 

 

 

 

+ Recent posts