2-1. Principles of network applications
Sockets
- Process sends/receives messages to/from its socket.
- Socket = door between application layer & transport layer.
1) sending process shoves message out door.
2) sending process relies on transport infrastructure on other side of door to deliver message to socket at receiving process.
3) two sockets involved: one on each side.
Addressing processes
▷ To receive messages, process must have identifier(식별자).
--> IP address + Port number (하나의 host에 여러 개의 process가 running하고 있기 때문이다.)
- IP address: DNS에 의해 정해진다. (32-bit IP address)
**DNS: 다른 application program에게 서비스를 제공하는 application program. - Port number: HTTP server의 port 주소
- HTTP server: 80
- mail server: 25
An application-layer protocol defines
- Types of messages exchanged.
- Message syntax(문법)
- Message semantics(의미론)
- Rules for when and how processes send/respond to messages
- Open protocols
: Defined in RFCs(Request For Comments; 인터넷 프로토콜의 표준화), everyone has access to protocol definition.
--> server/client 모두 하나의 프로토콜을 따른다.
ex) Web: HTTP, e-mail: SMTP - Proprietary protocols
ex) Skype (P2P)
What transport service does an app need?
- Data integrity (loss): reliable data transfer.
- Timing (delay): low delay.
- Throughput: 단위 시간당 보내야 하는 최소한의 처리량 --> minimum amount of throughput.
- Security
Transport service requirements: common apps
- TCP: 버퍼 --> throughput ↓
- UDP: 버퍼x --> congestion --> loss, BUT, throughput은 유지된다.
Internet transport protocols services
▶ TCP service
- reliable transport
- connection-oriented: setup required beween client-server. --> 메시지를 주고받기 전에 setup을 한다.
- flow control
- congestion control --> sender에서 보내는 속도를 조절한다.
▶ UDP service
- unreliable data transfer
- does not provide: reliability, connection setup, flow control, congestion control
But, UDP 이용: one-time transaction, smart application(application 계층에서 reliability 보장)
Internet apps: application, transport protocols
2-2. Popular application-layer protocols
Web & HTTP(HyperText Transfer Protocol)
- Web page consists of: objects, each of which can be stored on different Web servers.
- Web page consists of: base HTML-file.
--> Each objects is addressable by URL.
HTTP overview
: Web's application-layer protocol.
▶ Client-Server model
- Client: browser that requests, receives (using HTTP protocol) and displays Web objects.
- Server: Web server sends (using HTTP protocol) objects in response to requests.
Overall HTTP Operation
- TCP connection set-up.
1) Server: waits on port 80.
2) Client: initiates TCP connection (creates socket) to server, port 80.
3) Server: accepts TCP connection from client. - HTTP messages exchanges.
: Application-layer protocol (HTTP) messages exchanges between browser(HTTP client) and Web server(HTTP server). - TCP connection closed.
▷ HTTP is "stateless: server maintains no information about past client requests.
HTTP connections: two types
▶ Non-persistent HTTP
- TCP connection opened.
- One object is sent over TCP connection between client socket and server socket.
- TCP connection closed.
▶ Persistent HTTP
- TCP connection opened.
- Multiple object can be sent over a single TCP connection client socket and server socket.
- TCP connection closed.
Non-persistent HTTP: example
- Server: waits for TCP connection at port 80.
- Client: initiate TCP connection to HTTP server process.
- Server: accepts connection, notifying client.
- Client: sends HTTP request message into TCP connection socket. --> message indicates that client wants object.
- Server: receives request message, forms response message containing requested object, and sends message into its socket.
- Server: closes TCP connection
- Client: receives response message containing the requested object, displays html.
--> If there were 10 jpeg images, repeat all the steps for 10 jpeg objects.
Non-persistent HTTP: response time
- RTT: time for a small packet to travel from client to server & back to the client including 4 delays.
▶ HTTP response time
- RTT: initiate TCP connection
- RTT: HTTP request and response.
- + object/file transmission time.
--> Non-persistent HTTP response time = 2 RTT for retrieving 1 object when ignoring object/file transmission time.
Non-persistent HTTP (HTTP 1.1)
- Requires 2 RTTs per object.
예) 1 base HTML w/10 objects --> (1+1) + 10*(1+1) = 22 RTTs:
- 1: TCP connection
- 1: HTTP request/response - Browsers often open parallel TCP connections to fetch referenced objects.
예) 1 base HTML w/10 objects --> (1+1) + (1+1) = 4 RTTs
Persistent HTTP: HTTP 2.0
- Server leaves connection open after sending response.
- Subsequent(그 다음의) HTTP messages between same client/server sent over open connection.
--> Persistent HTTP response time = Total 3 RTT for retrieving n objects. (개수에 상관없이 3 RTT)
- RTT: Initiate TCP connection.
- RTT: Request/Resonse
질문: TCP vs. packet switching
▶ TCP/UDP: transport layer protocol
TCP와 UDP는 실제로 전송 계층(Transport Layer) 프로토콜입니다. 이들은 응용 프로그램(Application Layer)에서 생성된 데이터를 처리하고, 데이터의 전송, 순서 보장, 신뢰성 등을 담당합니다.
▶ Packet switching/Circuit switching
Packet switching과 Circuit switching은 네트워크의 하위 계층, 즉 데이터 링크 계층(Data Link Layer) 및 물리 계층(Physical Layer)에서 다루는 주제입니다. 이러한 기술은 네트워크에서 데이터 전송을 관리하는 방법에 관련된 것으로, 주로 라우팅과 스위칭에 영향을 미칩니다.
질문: HTTP = "stateless"
A. 여기에 대한 답은 일단 persistent, non-persistent 모두 stateless라는거고.. 그 다음 질문에 대한 답은 다음 수업 내용에서 대략 있을것 같으니 조금 기다려보세요.
질문: HTTP URL에서 host name
- Client-Server 구조: "client" host --> "server" host
RTT vs. Socket
RTT(라운드 트립 타임)와 소켓(Socket)은 서로 다른 개념입니다.
- RTT(라운드 트립 타임):
- RTT는 네트워크에서 데이터 패킷이 송신 측에서 수신 측까지 이동하고 돌아오는 데 걸리는 시간을 의미합니다. 이것은 네트워크의 지연(latency)을 측정하는 데 사용되며, 특히 네트워크 품질과 성능을 평가하는 데 중요한 지표 중 하나입니다. RTT는 주로 네트워크 간 통신의 지연 시간을 평가할 때 사용됩니다.
- 소켓(Socket):
- 소켓은 네트워크 프로그래밍에서 사용되는 개념으로, 응용 프로그램이 네트워크를 통해 데이터를 송수신할 수 있도록 하는 인터페이스입니다. 소켓은 TCP, UDP, 혹은 다른 네트워크 프로토콜을 사용하여 데이터 통신을 관리하며, 프로그래머가 데이터를 전송하고 받을 수 있도록 도와줍니다. 소켓은 응용 프로그램과 네트워크 스택 간의 중간 계층 역할을 합니다.
요약하면, RTT는 네트워크에서 데이터 전송의 시간 지연을 측정하는 데 사용되는 지표이며, 소켓은 응용 프로그램이 네트워크를 통해 데이터를 송수신하기 위한 프로그래밍 인터페이스입니다. RTT는 네트워크의 성능을 평가하는 데 도움이 되고, 소켓은 응용 프로그램이 네트워크를 활용하는 데 필요한 도구 중 하나입니다.
질문: Non-persistent HTTP (HTTP 1.1) - parallel TCP connections
Q. parallel TCP connection에서의 계산이 이해가 되지 않습니다...
A. "RTT는 병렬 전송의 간격에 따라 달라지는 것이 아닌지" 라고 질문했는데요..
그렇겠죠. 그런데 parallel TCP connection이니까 모든 TCP connection으로 virtually 동시에 request가 나가는거로 간주한거예요. 왜냐하면 각 TCP connection에 차례로 하나씩(processor가 병렬 processor 아니니까) request 내보내는데 걸린 delay가 RTT에 비하면 무시할만하기 때문.
Persistent HTTP의 RTT
'Computer Network > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터네트워크] 2. Application Layer (3) (0) | 2023.09.29 |
---|---|
[컴퓨터네트워크] 2. Application Layer (2) (0) | 2023.09.28 |
[컴퓨터네트워크] 1. Introduction (4) (0) | 2023.09.16 |
[컴퓨터네트워크] 1. Introduction (3) (0) | 2023.09.11 |
[컴퓨터네트워크] 1. Introduction (2) (0) | 2023.09.07 |