사용자계층 네트워크애플리케이션 종류
애플리케이션 프로세스끼리 통신
클라이언트 - 서버 통신
ppt 캡쳐 안했음 이건 그냥 파일로 봐라
서버에서 먼저 socket을 만들고 (tcp소켓으로)
특정 port에다가 bind를 하고
listen으로 듣고
accept 하도록 기다리겠다.
blocked 되어있다. client가 뭔가 connection 요청을 할 때까지!
=>
클라이언트가 tcp 소켓을 만들고
connect를 한다(클라이언트는 특정 port를 고정하지 않아도 되니까 bind를 쓸 필요가 없다)
=> 그 후엔 단순히 read and write다. !
기본적으로 tcp든 udp든 tranport layer라면 기본적으로 제공해야할 mupthiplexing and demultiplexing 에 대해서 이야기해보자 !
multiplexing: 결국에는 컴퓨터 내부에 process들이 많이 있어. 이런 상황에서 이 소켓을 통해서 transport layer로 내려오겠지 그 메세지 받아서 segment 생성해서 쭉쭉 내려줘야 한다. 내려올 구멍이 많다 여기저기서 ! 그때그때마다 segment를 만들어서 내려준다는 것을 말한다.
demultipaexing은 뭐냐하면: segment로 쭉쭉 내린후 받은 메세지를 process에게 정확히 올려줘야 한다. 각각 socket이 기다리고 있는데, 알맞은 애한테 줘야하는것 즉, 어떤 socket으로 올려줘야 하나 ? 이 이야기임
그런데, segment 을 받았다고. 데이터 부분을 끄집어내서 알맞은 목적지에 올려줘야 하는데 어떻게 판단하냐? 를 보게되면 ~ 결국에는 segment의 head에 적힌 정보를 보고 어디의 socket으로 올려줘야 하는지 판단한다.
segment는 데이터랑 헤더로 이루어져 있다.
헤더는 fields들이 여러개 있다. 부가적인 정보를 적으려고. 그 중에 중요한 필드가 두개가 있는 것이다. sorce port, dest port 가 있다. 그 필드를 가지고 demultiplexing을 한다는 이야기다 ~~
그림과는 다르게 데이터는 헤더에 비해 크기가 엄청나게 크다.
먼저, udp의 경우 어떤 식으로 demultiplexing을 하는지 보자 ~
같은 소켓으로 간다는 건 같은 프로세스한테 간다는 뜻.
tcp를 사용할 경우 어떻게 되냐하면 ~
src IP , src PORT, dst IP, dst PORT 네가지로 판단한다. 네개중에 하나라도 다르면 다른 소켓으로 가는 것이다.
segment 3개 공통점이 뭔가?
dst ip, port가 같아 그런데 다른 소켓으로 올라가
그 이유는 src ip가 다르거나, src port가 틀렸기 때문에!
tcp는 각각 client를 위해 소캣을 생성하고 관리하기 때문에 자원을 많이 소모한다.
udp는 워낙 간단하다 ~
언뜻 봐서는 아무것도 제공해주지 않는 것 같지만,
실제로는, transport layer가 제공하는 기본적인 서비스는 제공한다.
udp segment에 대해서 먼저 알아보자 ~
tcp, udp, ip의 header 정보는 잘 알고 있어야 한다.
여기 어떤 필드들이 있고, 어떤 의미를 가지고 있는지 잘 알아야 한다. 왜? 이 프로토콜이 중요하고, 동작을 이해하기 위해서는 필드를 잘 알아야 한다. 왜? 우편 배달부는 동작을 하는데, 편지 내용에 근거하지 않는다. 편지 봉투에 적힌 정보에 근거해서 행동한다 !!
그래서 프로토콜의 header를 이해하는게 전부다.
필드가 4개밖에 안돼서 다행이다 ~
유추할 수 있는거
그만큼 동작이 단순하다!
각각 의미를 알아보자~
결론) udp가 아무것도 안하는 것 같지만, 적어도 멀티플렉싱, 디멀티플렉싱을 해주고, 에러를 확인한다 !