[Network] Application Layer 어플리케이션 1
💻CS/Network

[Network] Application Layer 어플리케이션 1

728x90
반응형

www.kocw.net/home/cview.do?mty=p&kemId=1169634

 

컴퓨터네트워크

인터넷을 동작시키는 컴퓨터네트워크 프로토폴을 학습한다.

www.kocw.net

 

전송 단위

  • Message : Application Layer에서 만들어진 데이터 단위
  • Segment : message가 Transport Layer으로 내려왔을 때 부르는 전송단위 
  • Packet : Transport Layer에서 Network Layer로 내려왔을 때 부르는 전송단위

 

소켓이란?

  • Socket?
    • 네트워크상 동작하는 프로그램 사이 통신의 종착점이다. 
    • API의 일종이라고 봐도 된다.
    • 데이터를 통신하는 것이기에 client, server 모두 소켓이 있어야 한다. (프로세스 간의 통신)
    • TCP socket과 UDP socket은 다르다. (방식의 차이) 

 

TCP Socket Functions 

 

TCP Socket Functions

Server ~ Client

 

1. server에서 소켓 생성

2. bind (특정 포트에 바인드 시킨다)

3. listen(서버니까 받는 용도기에)

4. accept(요청 받을 준비) 

     > client로 부터 커넥션이 들어올때 까지 서버는 block이 됨,  

5. 소켓을 열어준다

6. 원하는 서버와 커넥트(3-way-handshaking)

7. write (데이터를 쓴다)

     > 클라는 아무 포트나 써도 되서 굳이 bind 하지 않는 것, 서버는 꼭 정해서 해야하기에 bind 하는 것 

8. read 서버에서 읽을 수 있다

9. write 서버에서 응답을 작성해서

10. read client단에서도 읽을 수 있다. 

 

데이터 교환이 끝나게 되면 다른 프로세스가 접근할 수 있도록 close를 통해 소켓을 release(해제)한다. 

 

Multiplexing / Demultiplexing

  • Multiplexing :
    • 하나의 통신 채널에서 두 개 이상의 데이터를 전송하는데 사용되는 것
    • 여러개를 하나로 묶어 다중화 해준다.(=패키징)
    • 하나의 세그먼트로 받아준다.
  • Demultiplexing
    • 반대로 하나의 인풋이 여러 개의 아웃풋으로 나타나는 형태.
    • 세그먼트를 받아서 내부 메세지를 꺼낸다.
    • 어떤 소켓으로 보낼지 정해준다.

Sender측에서 여러 개의 프로세스가 각자의 소켓을 가지고 메세지를 보내게 되면, (주로) TCP를 통해 이 때 멀티플렉싱이 일어나고, 리시버 측에서 디멀티플렉싱이 일어난다.

 

Demultiplexing

 

세그먼트는 헤더 + 데이터로 구성되어있다.

헤더 내에 부가적인 정보를 갖고 있는 필드들이 여러 개있는데, 이 필드를 가지고 디멀티플렉싱을 하는 것이다.  

 

TCP는 4개의 튜플(source IP Address, source Port #, dest IP Address, dest Port #)을 갖고 있어, 이를 파악하여 소켓에게 디멀티플렉싱 해준다.

특정 프로세스에서 접근 하능한 1:1 대응이라는 점에서 connection oriented 라고 불린다.

반면에 UDP는 아무나 보낼 수 있기에 커넥션 개념이 아니다. 

 

각 전송 단위들이 갖고 있는 "헤더"가 중요한 역할을 한다. 

우편 배달부가 편지 내용이 아닌 봉투에 적힌 내용을 기반으로 분류하는 것 처럼 네트워크도 마찬가지이다.

즉 헤더에 어떤 필드들이 들어가있는지 이해한다면 해당 프로토콜이 어떤 동작을 하는지 간접적인 이해가 가능하다는 것이다!

 

  • UDP segment header
    • 총 4개로 이루어져 있다. (source port #,  dest port #, length, check sum)
      • sp #, dp # : 16비트, 0 ~ 2^16-1개의 포트넘버. 두 가지 #를 통해 멀티플렉싱/디멀티 해준다.
      • check sum : 에러 판단을 해준다. 데이터 전송단 에러 발생시 올리지 않고 드랍시킨다.     
    • 이처럼 UDP도 최소한의 멀티플렉싱/디멀티플렉싱 + 에러체킹은 해준다. 
728x90
반응형