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 : 사본을 가져옴(매번 카피)
모든 메시지를 한 곳에서 관리
사용자가 폴더에서 메시지를 구성할 수 있음 - 메시지를 생성한 새 폴더로 옮기거나 읽거나 삭제 가능
다중 사용자 메일 박스와 서버에 기반을 둔 저장 폴더를 만들어 줌
'네트워크 설계' 카테고리의 다른 글
[10월29일]chapter-3 Transport Layer (0) | 2018.10.30 |
---|---|
[10월17일]Domain name System(DNS) (0) | 2018.10.21 |
[10월8일]chapter 2 - application layer (0) | 2018.10.14 |
[10월8일]networks under attack,history (0) | 2018.10.11 |
[9월19일]protocal layer (0) | 2018.09.24 |