KOCW | 컴퓨터네트워크 | 한양대학교 | 2015-2 | 이석복
KOCW | 컴퓨터네트워크 | 한양대학교 | 2018-2 | 이석복
위 강의를 수강하며 정리한 내용임을 밝힙니다.
네트워크 계층을 Top-Down 방식으로 위에서부터 한 겹씩 까보면서 디테일하게 알아보는 강의
TCP/IP 4 Layer
Application / Transport / Internet / Network Access
강의에서는 아래와 같이 나눔
Application / Transport / Network / Link
- 앱 개발자가 프로그래밍할 때는 application 계층만 신경쓰기 때문에 transport이하 계층을 신경 쓸 필요가 없음
- Client-Server architecture
client는 필요할 때만 요청을 보내고, server는 24시간 같은 장소에서 작동(고정된 주소를 가짐)
Sockets
- 프로세스는 socket을 통해 message를 주고 받음
- 소켓이란 OS에서 제공해주는 API 중 하나
- 인터넷상에 존재하는 컴퓨터는 고유한 주소를 갖고 있어야하는데 이를 IP주소라 함.
- IP는 인터넷상에 존재하는 컴퓨터를 찾기 위한 것이고, 그 컴퓨터 안의 프로세를 찾기 위한 것이 port
What transport service does an app need?
- application layer 는 transport layer에 종속적이며,
transport layer에서 application layer에 다음과 같은 것들 보장받길 원하지만 보장해주지 않음.
- data integrity: 데이터 무결성(손실이 없음을 보장) => TCP는 이를 보장함
- timing: 제한 시간 내에 보냄
- throughput: 처리량
- security: 보안
TCP를 사용할 경우 1번
은 보장함. 따라서 나머지 요소들을 Application에서 알아서 처리해야함
HTTP
- hypertext transfer protocol: 하이퍼텍스트를 주고 받는데 사용하는 규약(약속)
- WEB's application layer protocol
- request/response로 주고받음
- TCP를 기반
- default 80번 port 사용
- stateless : 클라이언트의 상태를 저장하지 않음(cookie 사용)
- safari, explorer, chrome 은 모두 다른 application 이지만 모두 같은 HTTP (protocol) 을 사용하므로 브라우저와 무관하게 application 사용이 가능
HTTP 연결의 두가지 방식
1. non-persistent HTTP
- 지속적이지 않은 HTTP
- TCP 커넥션을 HTTP 사용후 close
- 매 http 마다 TCP 커넥션을 새로 맺음(비효율)
- 응답 시간이 persistent 방식보다 더 오래 걸림
- RTT : round trip time(= 패킷 왕복 시간), 패킷을 목적지에 보내고 그 응답이 돌아오기까지의 시간
2. persistent HTTP
- 지속되는 HTTP
- 클라이언트/서버 간 하나의 TCP 커넥션으로 여러개의 HTTP 송수신을 수행(고효율)
- 현재 사용하는 HTTP 1.1 버전은 persistent 가 default. (지속커넥션 사용)
- 파이프라인 사용
Web caches(proxy server)
- origin server에 HTTP 요청을 하는 대신 proxy 서버에 HTTP 요청
- 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 함
- 프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장함
- 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨
- 전송 시간과 비용을 절약 + 불필요하게 외부와의 연결을 하지 않아도 되기 때문에 네트워크 병목 현상을 방지하는 효과
Conditional GET
- Cache에 저장된 데이터가 최신이 아닐 수 있음.(일관성 문제)
- 브라우저로 전달되는 객체들이 최신임을 확인하며 캐싱할 수 있도록 Conditional GET 사용
- HTTP 요청에 If-Modified-Since 헤더 라인 포함.
- 서버에 있는 객체의 마지막 수정된 날짜와 비교.
- 수정된 객체라면 객체를 보내줌 (200 OK + data)
- 최신 상태이면 object를 보내지 않음 (304 Not modified)
DNS
- Domain Name System
- hostname 를 ip 주소로 해석.
- IP, Port 번호를 일일이 다 기억하기 힘드니, Domain Name으로 접속할 수 있도록 한 시스템
- 전화번호부 역할
- 한 곳에 몰아놓으면 문제가 생기기 때문에 계층화(hierarchial database)
centralize DNS 사용하지 않는 이유
- 트래픽 집중
- 먼 거리에 위치한 국가의 데이터베이스 접근 불리
- 유지보수
- 에러를 대비한 클러스터링 없음
TLD, Authoritative Servers
DNS records
- type A(Address), type NS(Name Server) => 두 가지 타입을 쌍으로 저장
DNS는 Host Name을 IP 주소로 해석하는 Protocol이며 HTTP 통신을 하기 위한 준비 과정임
DNS HTTP 모두 Application 계층의 Protocol임
DNS는 UDP 기반 / HTTP는 TCP 기반
Type Of Socket
- 소켓은 TCP(SOCK_STREAM)와 UDP(SOCK_DGRAM) 두가지 타입이 있음
TCP(SOCK_STREAM)
이미지 출처: TCP socket function
- Server: bind()를 통해 특정 포트번호와 연결
- Server: accept()까지 진행 후 client의 요청이 올 때까지 대기
- Client: 포트를 특정할 필요가 없기 때문에 bind()가 없음
📚 참고
KOCW | 컴퓨터네트워크 | 한양대학교 | 2015-2 | 이석복
KOCW | 컴퓨터네트워크 | 한양대학교 | 2018-2 | 이석복
[Network] 2. Application layer : HTTP, Cookie, Web Cache, Conditional GET, SMTP
[네트워크] 한양대 컴퓨터 네트워크 이석복 교수님 2015년 - 2. 컴퓨터 네트워크 기본2
Photo by Nastya Dulhiier on Unsplash