본문 바로가기
CS(Computer Science)/네트워크

[네트워크] 애플리케이션 계층 - 소켓, TCP, UDP

by whdgus928 2023. 1. 29.

소켓이란?

소켓: 클라이언트 프로세스와 서버 프로세스의 통신이다

 

소켓이 통신하는 원리를 알아보자
1. socket: 웹 서버가 소켓을 생성한다
2. bind: 특정 포트에 연결한다
3. listen: 이 용도로 사용하겠다
4. accept: 클라이언트로부터 요청받을 준비 됐다, 여기서 클라이언트의 ip와 port를 저장한다, 서버는 클라이언트로부터 커넥션이 들어올 때까지 멈춰있는다.

5. 클라이언트 요청이 들어오면 연결

6. 데이터를 주고받는다

7. 통신 끝나면 close 시켜준다

 

※ 클라이언트는 아무 port나 사용해도 돼서 bind가 필요없다

 

TCP와 UDP의 역할

멀티플렉싱: 여러 소켓으로부터 데이터를 모으는것, 헤더로 데이터를 감싼다 

 

디멀티플렉싱: 받은 세그먼트를 배달하는 것

  - 세그먼트를 메시지를 받아야하는 프로세스에 올려야하는데 알맞은 애들에게 올려야한다

  - 어떤 소켓으로 올려보낼까

  - tcp에서 디멀티플랙싱은 소스 ip나 port 다르면 다른 곳으로 올라간다

 

※ 세그먼트=데이터+헤더

 헤드에 데이터 어디로 올라가야하는지 정보있음

※ TCP, UDP, IP는 기능을 하는 필드들이 있고 정보가 들어있기 때문에 헤더가 중요하다. 

TCP(왼), UDP(오) 세그먼트 구성

TCP와 다르게 UDP는 헤더가 4개뿐이라 동작이 비교적 단순하다. UDP 헤더의 4개의 필드를 살펴보면 소스포트, 목적지포트, 길이, 체크섬으로 구성돼있다. 소스포트와 목적지 포트는 각각 16비트라 0-60000까지 저장할 수 있다. 체크섬은 데이터에 에러가 있는지를 판단하는 기능인데 에러가 생겼으면 드롭해 데이터를 받지 않는다. 그래서 기본적으로 메시지를 받았으면 에러가 없는거다. UDP의 역할은 멀티플렉싱, 디멀티플렉셍, 에러체크이다.

 

OSI 계층은 상위 계층에서 서비스를 제공하는 구조이다. 전송계층에서 앱계층에게 제공해야하는 기능은 멀티플렉싱과,  에러체크다

반응형

댓글