[네트워크] 모두의 네트워크 (3/3)

jhkim·2023년 4월 10일
0

전송 계층 역할

물리, 데이터링크, 네트워크 계층만 있어도 목적지에 데이터를 보낼 수 있다. 그러나 데이터가 손상되거나, 유실되더라도 이들 계층에서는 아무런 보완을 해줄 수 없다.

전송 계층은 신뢰할 수 있게 데이터를 전달하는 역할을 한다.

오류 검출 기능과, 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능을 담당한다.

비연결형과 연결형으로 나뉜다.

  • 연결형: 상대방과 확인해가면서 통신 (TCP)
  • 비연결형: 일방적으로 데이터를 전송 (UDP)

TCP 구조

전송 계층에서 TCP로 전송할 때 붙이는 헤더가 TCP헤더이다.
이 TCP헤더가 붙은 데이터를 세그먼트라고 한다.

(데이터링크 계층: 프레임 -> 네트워크 계층: IP패킷 -> 전송 계층: 세그먼트)

TCP헤더에는 출발지 및 목적지 포트 번호, 확인 응답 번호, 체크섬, 윈도우 크기 등의 정보가 들어간다.
TCP는 연결형이므로 먼저 커넥션이 필요한데, TCP헤더에 연결 제어 정보가 기록되는 비트가 지정되어있다.
이 부분이 바로 코드 비트인데, ACK, SYN, FIN등 총 여섯가지의 비트가 있고 활성화와 비활성화를 1과 0으로 구분한다.

3-way 핸드셰이크

SYN과 ACK를 사용하여 연결 요청 및 확인 응답을 한다. 신뢰할 수 있는 연결을 위해 SYN(연결요청)을 보내면 SYN(연결 확정 요청)과 함꼐 확인 응답인 ACK를 상대방이 보낸다. 그럼 마지막으로 연결 확인을 땅땅! 해주는 ACK연결을 송신 측에서 보내면서 연결이 완료된다.
이 3-way handshake과정에서 서로의 윈도우 크기도 파악한다.

연결이 종료될 때도 마찬가지다. FIN(연결 해제 요청)을 보내면 연결 종료 응답 ACK를 반환하고, 수신 측도 FIN으로 연결 종료 요청을 보낸다.
그럼 송신측도 ACK를 보내면서 연결이 해제된다.

일련번호

일련번호는 데이터가 몇 번째 데이터인지를 알려주는 역할을 한다. 확인 응답 번호는 이런 일련번호를 가지고 몇 번째 데이터까지 수신했는지 알려준다. 확인 응답 번호는 "다음에 보냈으면 하는 데이트의 첫 바이트 번호"이다.

이런 일련의 과정을 데이터가 완전히 전송될 때까지 반복하는 것이다.
TCP는 일련 번호와 확인 응답 번호를 가지고 데이터가 손실되거나 손상되는 것을 감지하여 재전송하게 한다.

이렇게 신뢰성 있는 전송을 하는 대신, 매 세그먼트마다 확인 응답을 보내므로 효율이 높지 않다.
대신 세그먼트를 연속해서 보내고 난 뒤 확인 응답을 받으면 효율이 높아진다.
이렇게 임시적으로 세그먼트를 받아 보관하는 장소를 버퍼라고 한다.
버퍼가 넘치는 것이 오버플로우

이를 막기 위해서 버퍼의 한계를 알아야 하는데, 이게 TCP헤더의 윈도우 크기값이다. 즉 윈도우 크기는 얼마나 많은 용량의 데이터를 저장해둘 수 있는지를 나타낸다. 윈도우 크기만큼 확인 응답을 일일이 하지 않고 연속해서 송수신할 수 있다.


포트 번호 구조

전송 계층에서는 포트 번호를 통해 애플리케이션을 구분한다.
0-1023번 포트는 주요 프로토콜이 사용하도록 예약된 well-known ports다.


UDP구조

TCP와 달리 효율성을 중시하므로, 신뢰성이 부족하더라도 데이터를 효율적으로 빠르게 전송한다.
따라서 미디어 데이터 전송에 많이 쓰인다.

전송 계층에서 UDP헤더가 붙은 데이터는 UDP 데이터그램이라고 한다.
(데이터링크: 프레임 -> 네트워크 계층: IP패킷 -> 전송 계층: 데이터그램)
UDP 헤더는 TCP보다 훨씬 간결하다. 출발지 및 목적지 포트번호와 체그섬을 포함한다.

UDP를 사용하면 연결된 네트워크 내 장비들에 데이터를 일괄로 보내는 브로드캐스트를 할 수 있다. TCP는 모든 연결에 대해 3-way 핸드셰이크를 하므로 브로드캐스팅에 적합하지 않다.


응용(애플리케이션) 계층

응용 계층에서 애플리케이션이 돌아간다. 사용자의 요청을 통신 대상이 이해할 수 있는 메세지로 변환하고 전송 계층으로 전달하는 역할을 담담한다.
응용 계층의 프로토콜로는 FTP(파일전송), SMTP(메일전송), HTTP등이 있다.
또한 IP주소를 알아내기 위해 DNS도 사용된다.


웹서버 구조

웹 서버에서 브라우저로 데이터를 전송할 때, 이미지와 문서를 따로 전송한다. 따라서 이미지가 더 늦게 보이는 것이다.

HTTP1은 요청을 보낸 순서대로 응답하여 다음 요청에 대한 처리가 늦어질 수 있지만, HTTP2는 요청을 보낸 순서를 꼭 지키지 않아 콘텐츠를 빠르게 표시한다.


DNS

DNS서버는 전 ㅅ게ㅖ적으로 계층적으로 연결되어 있다. 도메인을 요청한 dns서버에 해당 정보가 ㅓㅄ으면, 다른 서버에게 물어본다.

ping

ping은 목적지와의 통시능ㄹ 확인한다. icmp 프로토콜로 목적지 컴퓨터에 ICMP패킷을 전송하고, 패킷 응답이 잘 오는지 확인하여 연결 상태를 확인한다. ping 목적지IP, ping 목적지호스트명 하여 명령을 실행할 수 있다.


랜카드에서 데이터 전달과 처리

0개의 댓글

관련 채용 정보