네트워크 프로그래밍 CH0. Socket and TCP/IP

Alpha, Orderly·2023년 3월 6일
0

OSI 7 Layer Model

Open System Interconnection

Physical Layer

  • 데이터를 전기적 신호로 변환해 주고 받는다.
  • 맥 주소를 활용해 통신
  • 정보의 흐름과 오류를 관리함
  • 프레임단위로 데이터 전송
  • 에러검출, 재전송, 흐름제어

Network Layer

  • 데이터를 목적지까지 안전하고 빠르게 전달 >> 라우팅
  • 주소부여, 경로설정

Transport Layer

  • 사용자들이 신뢰성 있는 데이터를 주고받을수 있게 함.
  • 패킷들의 전송이 유효한지 확인하고 전송에 실패한 패킷들을 다시 전송함.
  • TCP, UDP

Session Layer

  • 데이터 통신을 위한 논리적 연결
  • 응용프로그램의 관점
  • 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
  • TCP/IP 세션을 만들고 없애는 책임

Presentation Layer

  • 코드간 번역을 통해 시스템간 데이터 형식 차이를 수정함
    • 예시 : EBCDIC 인코딩 >> ASCIII 인코딩
  • MIME 인코딩, 암호화

Application Layer

  • 응용 프로세스와 연계해 응용 서비스를 수행

Socket API

  • Application Layer와 Transport Layer 사이에 위치함.

  • Peer-to-Peer model 보다는 Client-Server communication model 에 가깝다.

  • Kernel-level programming 보다는 User-level programming에 가깝다.

Programming

  • Program == code
  • Process == Instance of program
    • ProcessID 있다.

Socket은 System call을 이용해 동작한다.

  • socket
  • bind
  • connect (by client)
  • listen
  • accept
  • write, send, sendto
  • read, recv, recvfrom
  • close

Client-Server model

Client

  • 서버에 서비스 요청
  • 서비스를 사용하는 사용자 혹은 사용자의 단말기를 가리키는 말이다.
  • 직접 열고 직접 닫는다.

Server

  • 클라이언트에 서비스 제공
  • 항상 열려있고 알아서 닫힌다.

Iterative server

  • Client의 서비스 요구를 순서대로 처리함.
  • 구현이 간단하나 기다리는 시간이 길어질수 있다.

Concurrent server

  • 여러 요구를 동시에 서비스 가능하다.
  • 서비스 처리시간이 길거나 불규칙할때 사용한다.

위에서 아래로 읽기+++


ADDRESS

Internet address, IP


Physical addess = MAC Address < 6 byte>


  • Netid : 전체 네트워크에서 각 네트워크를 구분하기 위한 주소
    • 한 네트워크 안에서는 Netid가 같아야 통신 가능하다.
  • Hostid : 각 네트워크 안에서 장비를 구분하기 위한 주소
  • Multicast : 할당하는게 아니라 필요할때 쓰고 없어진다.

특별한 IP 주소

Loopback address

  • 자기 자신을 가리키는 IP 주소
	127.0.0.1
    10.0.0.2

Broadcast address

  • 특정 네트웍 전체에 패킷을 전송할때 사용하는 IP 주소
	Local
    	- 255.255.255.255
	Directed
        - NetID를 제외한 모든 bit를 1로 치환
        - 예시 : 155.230.255.255

Multicast

  • 받겠다고 한 기기에만 보낸다.
224~239.*.*.*

Multiplexing


아래 두 프로토콜은 IP와 Transport Layer 사이에 위치한다.

ICMP, Internet Control Message Protocol

  • 호스트가 없거나 포트가 닫혀있는 등의 에러 상황에 대해, IP헤더에 기록된 출발 호스트로 에러에 대한 정보 전송
Error reporting
  Destination unreachable (type = 3)
  Source quench (type = 4)
  Time exceeded (type = 11)
  Parameter problem (type = 12)
  Redirection (type = 5)
  
Query messages
  Echo request or reply (type = 8 or 0)
  Timestamp request & reply (type = 13 or 14)
  Address mask request & reply (type = 17 or 18)
  Router solicitation and advertisement (type = 10 or 9)

IGMP, Internet Group Management Protocol

  • 서브넷(로컬 네트워크) 상의 멀티캐스팅 멤버십 제어(그룹 관리)를 위한 프로토콜
  • IPTV와 같은 멀티캐스트 실시간 컨송을 위해 사용함
  • Class D IP 주소를 사용한다.


ARP, Address Resolution Protocol

  • IP주소를 기반으로 MAC 주소를 알아온다.
  • LAN 환경에서의 통신은 MAC주소를 기반으로 하기에 ARP를 통해 IP주소를 기반으로 MAC 주소를 알아와야 한다.

Broadcast -> Unicast 순서로 이루어진다.

RARP, Reverse Address Resolution Protocol

  • ARP와는 반대로 MAC 주소를 기반으로 IP주소를 알아내는것.

IPv6

  • 128비트 / 16바이트로 구성된다.
  • 16진수와 콜론으로 표기한다.
    • 예시 : 2001:0db8:85a3:08d3:1319:8a2e:0370:7334
  • ICMPv6를 이용해 ARP와 IGMP 모두 처리 가능.

UDP, User Datagram Protocol

  • 신뢰성이 보장되지 않는 데이터 전송 프로토콜
  • 용량이 가볍고 송신속도가 빠르다.

TCP, Transmission Control Protocol

  • Packet switching 방식으로 인한 데이터 유실이나 전달 속도 차이 문제를 해결하기 위해 나왔다.
  • 신뢰성 기능
    • 흐름 제어 / Flow Control
      • 수신측 버퍼에 의존해 오버플로우 방지
      • 수신측의 ACK를 받기 이전에 송신측에서 보내는 데이터의 양을 조절함
      • Sliding window를 사용
    • 에러 관리 / Error Control
      • ACK, 재전송
    • 혼잡 제어 / Congestion Control
      • 선형상승, 지수하강
  • 연결 관리
    • 연결 생성
      • Three way handshaking
        1. 통신 시작 요청 / SYN
        2. 통신 요청 응답 / SYN-ACK
        3. SYN-ACK에 응답 / ACK
    • 연결 해제
      • Four way handshaking
        1. 연결 종료 요청 / FIN
        2. 연결 종료 요청 응답 / FIN-ACK
        3. 연결 종료 요청 / FIN
        4. 연결 종료 요청 응답 / FIN-ACK
    • 연결 리셋
      • 예상치 못한 상황 발생시
  • TCP 컨트롤 플래그

IP 주소 / 포트 번호

  • IP주소는 호스트를 지정, 포트 주소는 호스트 내부에서의 프로세스를 지정한다.

IANA range

  • 특정한 쓰임새를 위해서 IANA에서 할당한 TCP 및 UDP 포트 번호
	0 ~ 1023 / Well-Known port ------- IANA에 의해 할당 및 지정
    1024 ~ 49151 / Registered port --- 지정되진 않았으나, IANA에 의해 할당됨
    49152 ~ 65535 / Dynamic port ----- 임시(Ephemeral) 포트

소켓의 주소는 IP주소와 포트번호의 조합으로 이루어진다

profile
만능 컴덕후 겸 번지 팬

0개의 댓글