IP와 PORT
- IP : 인터넷상의 존재하는 컴퓨터를 지칭하는 주소
- PORT : 컴퓨터 안에 여러 프로세스 중 특정 프로세스를 지칭
IP와 PORT는 다른 컴퓨터에 위치한 프로세스를 지칭하는 인덱스이다.
Sockets
- 프로세스는 socket을 통해 message를 주고 받는다.
- socket은 OS에서 제공해주는 API 중 하나이다.
What transport service does an app need?
application layer는 transport layer에 종속적이며, transport layer에서 application layer에 다음과 같은 것들 보장받길 원하지만 보장해주지 않는다.
- data integrity : 데이터 무결성(손실이 없음을 보장) -> TCP 프로토콜은 이를 보장해준다.
- timing : 제한 시간 내에 보냄
- throughput : 처리량
- security : 보안
TCP를 사용할 경우 data integrity
는 보장해주지만 나머지 요소들은 application에서 알아서 처리해야 한다.
HTTP (Hyper Text Transfer Protocal) 특징
- Web's application layer protocal
- request / response로 hypertext를 주고 받는다.
- TCP를 사용한다.
- default 80번 port를 사용한다.
- stateless : 클라이언트의 상태를 기억하지 않는다. (cookie 사용)
- safari, explorer, chrome 은 모두 다른 application 이지만 모두 같은 HTTP (protocol)을 사용하므로 브라우저와 무관하게 application 사용이 가능하다.
두 가지의 HTTP 연결 방식
non-persistent HTTP
- 지속적이지 않은 HTTP
- TCP 커넥션을 HTTP 사용 후 종료(close)한다.
- 매 HTTP 마다 TCP 커넥션을 새로 맺는다. (비효율)
- 응답시간이 persistent방식보다 오래 걸린다.
RTT ?
round trip time(=패킷 왕복 시간).
패킷을 목적지에 보내고 그 응답이 돌아오기까지의 시간을 의미한다.
persistent HTTP
- 지속적인 HTTP
- 클라이언트 / 서버 간 하나의 TCP 커넥션으로 여러 개의 HTTP 송/수신을 수행한다. (고효율)
- 현재 사용하는 HTTP1.1 버전은 persistent가 default. (지속 커넥션 사용)
- 파이프라인 사용
Type Of Socket
- socket은 TCP와 UDP 두 가지 타입이 존재한다.
TCP(SOCK_STREAM)
TCP Server socket()
: 웹 서버가 TCP 소켓을 연다.
TCP Server bind()
: 방금 생성한 소켓을 특정 포트에 바인드 시킨다. 포트 번호가 적힘
TCP Server listen()
: 해당 소켓을 listen 용도로 사용.
TCP Server accept()
: 준비가 된 상태. 클라이언트로 부터 요청을 받을 준비가 됐다는 의미.
Blocks until connection from client
: 클라이언트로 부터 커넥션이 들어올 때 까지 block 상태.
끝 !
간 밤에.. 지옥을 살짝 구경한 것 같다.
Ref. KOCW 한양대학교 컴퓨터 네트워크 이석복 교수님