Daily coding

Java Basic : day 16 - 네트워크 TCP / UDP 본문

Language/Java_basic

Java Basic : day 16 - 네트워크 TCP / UDP

sunnnkim 2019. 12. 9. 18:48

TCP: Transmission Control Protocol

 

 Transmission Control  Protocol
       전송        제어     규약
         


Server : TCP, DB, Web(tomcat) + Web Socket

 

         
종단 시스템: host
                 네트워크 상에서 더 연장되지 않는 기기 ( Network Edge)
                 - PC, Smart Phone, PDA, Scanner, Printer
            
Router : hardware       
                host 간에 상호 데이터를 교환할 수 있도록 하는 장비

                (둘 혹은 그 이상의 네트워크와 네트워크 간 데이터 전송을 위해 최적 경로를 설정해주며

                 데이터를 해당 경로를 따라 한 통신망에서 다른 통신망으로 통신할 수 있도록 도와주는 인터넷 접속 장비)
                inter Network : 포괄적인 통신
         

 

 

 

TCP - 통신 제어 규약                 동기 통신
UDP - User Datagram Protocol    비동기 통신
         

 

 

7 Layer

        1계층 - Physical layer          물리 계층
        2계층 - Data Link layer        주소를 헤더에 첨부 
        3계층 - Network layer         네트워크 IP -> Address
        4계층 - Transport layer       네트워크 Port
        5계층 - Session layer          세션 부분을 동기화
        6계층 - Presentation layer   보안, 압축, 확장
        7계층 - Application layer     프로그램(소프트웨어)
    

 

 


  TCP 

  - 신사적인 protocol (신뢰할 수 있는 protocol)
         (전화) -> 상대방과 연결이 되어야지 통신이 start
  - 동기화 -> 보내게 되면 상대방이 받을 준비가 되어있어야 함(처리 순서가 정확하게 일치 해야 함)
                  서로 보내려고 하면 데드락 (에러)
  - 데이터의 경계가 없음 : 데이터 용량에 따른 차등이 없음, 전송 중 오류가 나면 처음부터 다시 전송
  - 데이터 전송 후 결과 확인함
  - 1:1 통신만 가능
  - 채팅(String 전송), Object통신(DTO,class)이 가능
   

 

UDP

 - 비 연결형 Protocol
 - 지상파 방송(안테나)
 - 1:1 통신가능  (Unicast)
 - 1:m (일대다) 통신 가능 (Broadcast)
 - 다대다 통신 가능 (Multicast)
 - 데이터의 경계가 있음 : 전송 가능한 용량이 있음
 
* TCP + UDP 같이 사용 가능

 


 
Packet (묶음)

  - 제어정보, 데이터 등이 결합된 형태로 전송이 되는 실제 데이터
  - IP, Port, String (예시:1001-홍길동-서울시.. -> 보안에선 훌륭하나 (바이트코드를 통해 암호화 가능)

                                                               매번 형식으로 데이터를 바꿔줘야함 )
     Object(DTO 형태로 바로 전송이 가능) 도 전송이 가능함
   


* IP : Internet Protocol (주소)
   IPv4 : XXX.XXX.XXX.XXX -> 0~255
   IPv6 : XXX.XXX.XXX.XXX.XXX.XXX -> 0~255
 
  - 127.0.0.1 --> 자기 자신의 IP
 
* Port Number :
  - IP 주소는 internet에 존재하는 host (Pc/smartPhone) 를 식별할 수 있으나
    최종 주체인 프로세스(프로그램)를 식별하지 못하기 때문에 
    프로세스를 구별하기 위해서 지정된 숫자 ( 0~1024 를 제외한 숫자( 0-1024:시스템 영역의 포트넘버 ) )
  - 각 프로세스는 서로 다른 번호로 이루어져 있음
 
 
 * Socket : Unix로부터 옴 ( 유닉스의 file 통신을 바꾸어 놓은 것이 소켓 )
   - 통신의 주체, 통신을 하기 위한 Object
   - IP주소, TCP / UDP 규약을 가지고 있음
   - 클라이언트는 보통 1개의 소켓, 서버는 소켓이 많음 ( 여러 개의 클라이언트와 연결할 수 있음 ) 
   
     ** network State 확인 : cmd에서 netstat -a -n 입력
 
 
통신순서 : 


           Server                                                      Client
  1. socket 버전 확인                                     1. socket 버전 확인
  2. Binding(IP, Port설정/확인)
  3. Listening(대기상태)
  4. Accept           <-------------------------        2. Connect

  (클라이언트 정보파악:IP,Port)                (클라이언트가 연결요청할때까지 서버는 대기하다가 요청들어오면 받아줌) 

 

                                          < 접속 성공 >


              1) recv(read)   <------------   1) send(write) : 요청 보내기
              2) send(write) <-------------   2) recv(read)  : 요청사항 받기
   

 

  DNS Server(Domain Name System Server) : 도메인은 
  - IP ----> 문자열(String)로 바꿔주는 작업을 처리함