Application 계층
- 어플리케이션은 network-core에서 동작하는 것에 대한 코드는 작성할 필요가 없음. 이것은 application 아래 영역에서 알아서 진행함
- 어플리케이션은 아래 4가지 작업이 필요
- data integrity(no loss): packet 유실 방지, TCP가 지원해줌
- timing: 특정 시간 내에 처리 필요, 지원 X
- throughput: 시간 당 일정량 처리 필요, 지원 X
- security: 지원 X
- 지원하지 않는 항목에 대해 application 레벨에서 작업이 필요, 그래서 보안프로그램 설치 등을 지지고 볶고 함.
- network-core는 dumb core라고도 할 정도로 패킷 전송에 관한 것만 작업함
client와 server간 통신: Sockets
- OS시간에 같은 컴퓨터 내에서 process간 통신은 OS에 의해서 진행했음
- processes in different hosts communicate by exchaning messages
- 이 커뮤니케이션을 연결하는 인터페이스가 socket
- socket을 연결시키기 위한 indexing이 IP address와 port 번호임
- port 번호는 한 컴퓨터 내에 여러 application을 구분하기 위한 번호
Q. 왜 항상 HTTP 연결에 80 PORT를 쓸까?
- 포트 번호가 제각각이면 사용자가 접속할 때 항상 다른 포트번호를 지정해야함. 찾기 쉽게 항상 같은걸 쓰자고 약속한 것
HTTP
- Hyper-text-transport protocol
- web page는 여러 objects로 구성됨(HTML, JPEG, audio ...)
- 이 objects는 referenced 되어 있음(URL로 링크됨)
- client requests and receives and displays web objects
- server sends objects in response to requests
- TCP connection을 이용함(3way handshakes)
- stateless: 과거 연결된 요청에 대한 어떤 정보도 가지고 저장하지 않고 작업이 끝나면 연결을 끊어버림
- persistent connections: multiple objects can be sent over single TCP connection between clinet, server, non-persistent는 한 object에 대한 요청마다 계속 연결하고 끊고를 반복함. 현 인터넷 체계는 persistent를 사용.
좋은 글 감사합니다.