글

라벨이 Transport Layer인 게시물 표시

17. TCP 와 UDP 차이점 (4계층 Transport Layer전송 계층)

(4계층 Transport Layer전송 계층) TCP 와 UDP 차이점 TCP는 연결 지향형 프로토콜로, 수신 측이 데이터를 흘려버리지 않도록 데이터 흐름 제어(Flow Control) 및 전송 중 에러가 발생할 경우 자동으로 재전송하는 에러 제어(Error Control) 기능을 한다. 그리고 이를 통해 데이터의 확실한 전송을 보장한다. 또 다른 4계층 프로토콜 중 하나인 UDP(User Datagram Protocol)는 TCP와는 달리 데이터의 신뢰성 있는 전송을 보장하지는 않는다. 그러나 신뢰성이 매우 높은 회선을 사용하거나, 혹은 데이터의 확실한 전송을 요구하지 않는 경우, 한 번에 많은 상대에게 메시지를 전송하고자 하는 경우에는 전송 경로 확립을 위한 번잡함을 생략하고 시간을 절약할 수 있어 UDP가 더 효과적이다. *TCP에 대한 설명 https://leejoongwon.blogspot.com/2019/06/13-tcp-4-transport-layer.html *UPD에 대한 설명 https://leejoongwon.blogspot.com/2019/06/16-udp-4-transport-layer.html

16. UDP (4계층 Transport Layer전송 계층)

이미지
(4계층 Transport Layer전송 계층) UDP ( User Datagram Protocol ) UDP ( User Datagram Protocol )는 인터넷에서 사용하는 프로토콜중 중 구조가 가장 간단하다.  하부의 IP 프로토콜을 이용해 비연결형 서비스 지원하는 UDP는 작지만 빠른 전송이 가능하다 *특징 • 비연결형 서비스를 제공한다. • 헤더와 전송 데이터에 대한 체크섬 기능을 제공한다. • Best Effort 전달 방식을 지원한다. UDP는 상위 계층에서 받은 데이터를 IP 프로토콜에 전달하지만 전송한 데이터그램이 목적지까지 제대로 도착했는지는 확인하지 않는다.  따라서 TCP보다 신뢰성이 떨어져 일반 응용 프로그래머가 덜 선호한다. 하지만 프로토콜을 처리하는 기능이 작아 TCP보다 데이터 처리가 빠르므로 데이터 전송 시간에 민감한 응용 환경에서는 UDP를 사용하는 것이 유리하다. UDP 헤더 UDP 헤더( UDP Header )의 구조다. TCP보다 단순하여 의미와 기능을 쉽게 파악할 수 있다.  또한 프로토콜에서 수행하는 기능도 간단해 프로토콜 오버헤드가 작은 편이다. UDP 헤더 UDP 헤더 상단에 있는 숫자는 비트 수고, 각 필드의 의미는 다음과 같다. • Source Port / Destination Port (송신 포트/수신 포트) : 송수신 프로세스에 할당된 네트워크 포트번호다.  호스트에서 실행되는 프로세스를 구분하는 데 이용한다.  호스트는 IP 프로토콜의 IP 주소로 구분하므로, 인터넷에서 실행되는 네트워크 프로세스의 고유 구분자는 호스트의 IP 주소와 프로세스 포트 번호의 조합이다.  UDP 포트 번호는 ...

15. TCP Syn flooding (4계층 Transport Layer전송 계층)

이미지
(4계층 Transport Layer전송 계층) TCP Syn flooding 위 왼쪽 그림은 정상적인 TCP 를 맺는 Flow 이다. 하지만 오른쪽 처럼 서버의 Syn + Ack에 대해 클라이언트쪽에서 ACK을 주지 않으면, 75초 동안 대기 후 커넷션을 초기화를 한다. 문제는 위와같이 수많은 요청이 발생 할 경우, 커넥션 마다 75초를 기다리고, 메모리의 백로그큐(backlog queue) 에 쌓이면서, 서버쪽에 설정된 backlog 값을 넘어 서면 더이상 Syn 요청을  받지 못하게 된다. 해결방안 서버syncookie 기능 활성화 +syncookie : 클라이언트 Syn 요청에 대해 서버에서 응답할때 Syn 패킷을 backlog에  저장하지 않고, Tcp Packet hearder의 option항목 (mss, timestamp 등) 에 Initiak Sequence Number(ISN) dmf 만들어 클라이언트에게 보낸다. 클라이언트에서 ACK가 왔을때 다시 ISN 정보를 확인하고 클라이언트의 정보를 확인후 커넷션을 맺는다. Syncookies 기능은 syn flooding 으로 backlog가 찼을때만 활성화 된다 기본으로 해당 옵션을 켜는게 좋다 굳이 syncookies의 단점이라고 하면... 클라이언트 -> 서버로 ACK 패킷이 유실될 경우, 클라이언트쪽 해당 커넥션이 freezing 상태가 된다  또한 정상적인 3way hancshake 면 packet hearder 의 option 항목을 참조하여 서버측 최적의 window scailing 값 등을 사용하여 성능을 높이지만, syncookie 가 활성화 되면 해당 정보를 참조할수 없어 성능면에선 좋진 않다고 하지만 큰 성능차는 나지 않을 것이다 커널 옵션 및 어플단 backlog 항목 설정 +커널...